gitweb.git
merge-recursive: handle D/F conflict case more carefully.Junio C Hamano Sat, 7 Apr 2007 13:41:13 +0000 (06:41 -0700)

merge-recursive: handle D/F conflict case more carefully.

When a path D that originally was blob in the ancestor was
modified on our branch while it was removed on the other branch,
we keep stages 1 and 2, and leave our version in the working
tree. If the other branch created a path D/F, however, that
path can cleanly be resolved in the index (after all, the
ancestor nor we do not have it and only the other side added),
but it cannot be checked out. The issue is the same when the
other branch had D and we had renamed it to D/F, or the ancestor
had D/F instead of D (so there are four combinations).

Do not stop the merge, but leave both D and D/F paths in the
index so that the user can clear things up.

Signed-off-by: Junio C Hamano <junkio@cox.net>

merge-recursive: do not barf on "to be removed" entries.Junio C Hamano Sat, 7 Apr 2007 12:52:57 +0000 (05:52 -0700)

merge-recursive: do not barf on "to be removed" entries.

When update-trees::threeway_merge() decides that a path that
exists in the current index (and HEAD) is to be removed, it
leaves a stage 0 entry whose mode bits are set to 0. The code
mistook it as "this stage wants the blob here", and proceeded
to call update_file_flags() which ended up trying to put the
mode=0 entry in the index, got very confused, and ended up
barfing with "do not know what to do with 000000".

Since threeway_merge() does not handle case #10 (one side
removes while the other side does not do anything), this is not
a problem while we refuse to merge branches that have D/F
conflicts, but when we start resolving them, we would need to be
able to remove cache entries, and at that point it starts to
matter.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Treat D/F conflict entry more carefully in unpack-trees... Junio C Hamano Sat, 7 Apr 2007 12:49:19 +0000 (05:49 -0700)

Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()

This fixes three buglets in threeway_merge() regarding D/F
conflict entries.

* After finishing with path D and handling path D/F, some stages
have D/F conflict entry which are obviously non-NULL. For the
purpose of determining if the path D/F is missing in the
ancestor, they should not be taken into account.

* D/F conflict entry is a marker to say "this stage does _not_
have the path", so do not send them to keep_entry().

Signed-off-by: Junio C Hamano <junkio@cox.net>

t1000: fix case table.Junio C Hamano Sat, 7 Apr 2007 12:42:01 +0000 (05:42 -0700)

t1000: fix case table.

Case #10 is not handled with unpack-trees.c:threeway_merge()
internally, unless under the agressive rule, and it is not a
bug. As the test expects, ND (one side did not do anything,
other side deleted) case was meant to be handled by the caller's
policy (e.g. git-merge-one-file or git-merge-recursive).

Signed-off-by: Junio C Hamano <junkio@cox.net>

shortlog -w: make wrap-line behaviour optional.Junio C Hamano Sun, 8 Apr 2007 08:28:00 +0000 (01:28 -0700)

shortlog -w: make wrap-line behaviour optional.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Use print_wrapped_text() in shortlogJohannes Schindelin Fri, 22 Dec 2006 21:15:59 +0000 (22:15 +0100)

Use print_wrapped_text() in shortlog

Some oneline descriptions are just too long. In shortlog, it looks much
nicer when they are wrapped. Since print_wrapped_text() is UTF-8 aware,
it also works with those descriptions.

[jc: with minimum fixes]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: show-ref: document --exclude-existingJulian Phillips Mon, 9 Apr 2007 20:57:36 +0000 (21:57 +0100)

Documentation: show-ref: document --exclude-existing

Use the comment in the code to document the --exclude-existing
function to git-show-ref.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsexportcommit -p : fix the usage of git-apply -C.Tomash Brechko Mon, 9 Apr 2007 11:24:02 +0000 (15:24 +0400)

cvsexportcommit -p : fix the usage of git-apply -C.

Unlike 'patch --fuzz=NUM', which specifies the number of lines allowed
to mismatch, 'git-apply -CNUM' requests the match of NUM lines of
context. Omitting -C requests full context match, and that's what
should be used for cvsexportcommit -p.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-archive: make tar the default formatRené Scharfe Mon, 9 Apr 2007 15:12:53 +0000 (17:12 +0200)

git-archive: make tar the default format

As noted by Junio, --format=tar should be assumed if no format
was specified.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/push'Junio C Hamano Mon, 9 Apr 2007 06:54:47 +0000 (23:54 -0700)

Merge branch 'jc/push'

* jc/push:
git-push to multiple locations does not stop at the first failure
git-push reports the URL after failing.

Merge branch 'jc/merge-subtree'Junio C Hamano Mon, 9 Apr 2007 06:51:14 +0000 (23:51 -0700)

Merge branch 'jc/merge-subtree'

* jc/merge-subtree:
A new merge stragety 'subtree'.

It is safe to merge this early as this is a feature that user
explicitly needs to ask for and would not trigger otherwise. A
known issue with the current implementation is that the subtree
matching heuristics is very stupid. It could run ls-tree twice
and try to count intersection.

Giving it wider audience would help it to get improved by
motivated volunteers.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'js/fetch-progress'Junio C Hamano Mon, 9 Apr 2007 06:27:22 +0000 (23:27 -0700)

Merge branch 'js/fetch-progress'

* js/fetch-progress:
git-fetch: add --quiet

Merge branch 'maint'Junio C Hamano Mon, 9 Apr 2007 06:20:43 +0000 (23:20 -0700)

Merge branch 'maint'

* maint:
Add Documentation/cmd-list.made to .gitignore
git-svn: fix log command to avoid infinite loop on long commit messages
git-svn: dcommit/rebase confused by patches with git-svn-id: lines
git-svn: bail out on incorrect command-line options

Add Documentation/cmd-list.made to .gitignoreJunio C Hamano Mon, 9 Apr 2007 05:14:16 +0000 (22:14 -0700)

Add Documentation/cmd-list.made to .gitignore

Noticed by Randal L. Schwartz.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: fix log command to avoid infinite loop on... Eric Wong Sun, 8 Apr 2007 07:59:22 +0000 (00:59 -0700)

git-svn: fix log command to avoid infinite loop on long commit messages

This bug has been around since the the conversion to use the
Git.pm library back in October or November. Eventually I'd like
"git rev-list/log" to have the option to not truncate overly
long messages.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: dcommit/rebase confused by patches with git... Eric Wong Sun, 8 Apr 2007 07:59:19 +0000 (00:59 -0700)

git-svn: dcommit/rebase confused by patches with git-svn-id: lines

When patches are merged from another git-svn managed branch,
they will have the git-svn-id: metadata line in them (generated
by git-format-patch).

When doing rebase or dcommit via git-svn, this would cause
git-svn to find the wrong upstream branch. We now verify
that the commit is consistent with the value in the .rev_db
file.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: bail out on incorrect command-line optionsEric Wong Tue, 3 Apr 2007 08:57:08 +0000 (01:57 -0700)

git-svn: bail out on incorrect command-line options

"git svn log" is the only command that needs the pass-through
option in Getopt::Long; otherwise we will bail out and let the
user know something is wrong.

Also, avoid printing out unaccepted mixed-case options (that
are reserved for the command-line) such as --useSvmProps
in the usage() function.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: Add asciidoc documentation for new database... Frank Lichtenheld Sat, 7 Apr 2007 14:58:10 +0000 (16:58 +0200)

cvsserver: Add asciidoc documentation for new database backend configuration

Documents the new configuration variables and the variable
substitution mechanism.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Start 1.5.2 cycle by prepareing RelNotes for it.Junio C Hamano Sun, 8 Apr 2007 06:59:32 +0000 (23:59 -0700)

Start 1.5.2 cycle by prepareing RelNotes for it.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/read-tree-df' (early part)Junio C Hamano Sun, 8 Apr 2007 06:52:40 +0000 (23:52 -0700)

Merge branch 'jc/read-tree-df' (early part)

* 'jc/read-tree-df' (early part):
Fix switching to a branch with D/F when current branch has file D.
Fix twoway_merge that passed d/f conflict marker to merged_entry().
Fix read-tree --prefix=dir/.
unpack-trees: get rid of *indpos parameter.
unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
add_cache_entry(): removal of file foo does not conflict with foo/bar

Merge branch 'maint'Junio C Hamano Sun, 8 Apr 2007 06:34:45 +0000 (23:34 -0700)

Merge branch 'maint'

* maint:
Prepare for 1.5.1.1
cvsserver: small corrections to asciidoc documentation

Prepare for 1.5.1.1Junio C Hamano Sun, 8 Apr 2007 06:33:14 +0000 (23:33 -0700)

Prepare for 1.5.1.1

Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: Corrections to the database backend configur... Frank Lichtenheld Sat, 7 Apr 2007 14:58:09 +0000 (16:58 +0200)

cvsserver: Corrections to the database backend configuration

Don't include the scheme name in gitcvs.dbdriver, it is
always 'dbi' anyway.

Don't allow ':' in driver names nor ';' in database names for
sanity reasons.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: small corrections to asciidoc documentationFrank Lichtenheld Sat, 7 Apr 2007 14:58:08 +0000 (16:58 +0200)

cvsserver: small corrections to asciidoc documentation

Fix a typo: s/Not/Note/

Some formating fixes: Use ` ` syntax for all filenames and
' ' syntax for all commandline switches.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

A new merge stragety 'subtree'.Junio C Hamano Fri, 16 Feb 2007 00:32:45 +0000 (16:32 -0800)

A new merge stragety 'subtree'.

This merge strategy largely piggy-backs on git-merge-recursive.
When merging trees A and B, if B corresponds to a subtree of A,
B is first adjusted to match the tree structure of A, instead of
reading the trees at the same level. This adjustment is also
done to the common ancestor tree.

If you are pulling updates from git-gui repository into git.git
repository, the root level of the former corresponds to git-gui/
subdirectory of the latter. The tree object of git-gui's toplevel
is wrapped in a fake tree object, whose sole entry has name 'git-gui'
and records object name of the true tree, before being used by
the 3-way merge code.

If you are merging the other way, only the git-gui/ subtree of
git.git is extracted and merged into git-gui's toplevel.

The detection of corresponding subtree is done by comparing the
pathnames and types in the toplevel of the tree.

Heuristics galore! That's the git way ;-).

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-push to multiple locations does not stop at the... Junio C Hamano Sat, 7 Apr 2007 06:04:53 +0000 (23:04 -0700)

git-push to multiple locations does not stop at the first failure

When pushing into multiple repositories with git push, via
multiple URL in .git/remotes/$shorthand or multiple url
variables in [remote "$shorthand"] section, we used to stop upon
the first failure. Continue the operation and report the
failure at the end.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-push reports the URL after failing.Junio C Hamano Sat, 7 Apr 2007 06:04:55 +0000 (23:04 -0700)

git-push reports the URL after failing.

This came up on #git when somebody was getting 'unable to create
./objects/tmp_oXXXX' but sweared he had write permission to that
directory. It turned out that the repository URL was changed
and he was accessing a repository he does not have a write
permission anymore.

I am not sure how much this would have helped somebody who
believed he was accessing location when the permission of that
location was changed while he was looking the other way, though.
But giving more information on the error path would be better,
and the next change would be helped with this as well.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/index-output'Junio C Hamano Sat, 7 Apr 2007 09:26:24 +0000 (02:26 -0700)

Merge branch 'jc/index-output'

* jc/index-output:
git-read-tree --index-output=<file>
_GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.

Conflicts:

builtin-apply.c

Merge branch 'fp/make-j'Junio C Hamano Sat, 7 Apr 2007 09:20:47 +0000 (02:20 -0700)

Merge branch 'fp/make-j'

* fp/make-j:
Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Merge branch 'cc/bisect'Junio C Hamano Sat, 7 Apr 2007 09:20:39 +0000 (02:20 -0700)

Merge branch 'cc/bisect'

* cc/bisect:
git-bisect: allow bisecting with only one bad commit.
t6030: add a bit more tests to git-bisect
git-bisect: modernization
Documentation: bisect: "start" accepts one bad and many good commits
Bisect: teach "bisect start" to optionally use one bad and many good revs.

Merge branch 'jc/checkout' (early part)Junio C Hamano Sat, 7 Apr 2007 09:19:54 +0000 (02:19 -0700)

Merge branch 'jc/checkout' (early part)

* 'jc/checkout' (early part):
checkout: allow detaching to HEAD even when switching to the tip of a branch

Merge branch 'maint'Junio C Hamano Sat, 7 Apr 2007 08:30:43 +0000 (01:30 -0700)

Merge branch 'maint'

* maint:
Documentation: tighten dependency for git.{html,txt}
Makefile: iconv() on Darwin has the old interface
t5300-pack-object.sh: portability issue using /usr/bin/stat
t3200-branch.sh: small language nit
usermanual.txt: some capitalization nits
Make builtin-branch.c handle the git config file
rename_ref(): only print a warning when config-file update fails
Distinguish branches by more than case in tests.
Avoid composing too long "References" header.
cvsimport: Improve formating consistency
cvsimport: Reorder options in documentation for better understanding
cvsimport: Improve usage error reporting
cvsimport: Improve documentation of CVSROOT and CVS module determination
cvsimport: sync usage lines with existing options

Conflicts:

Documentation/Makefile

Documentation: tighten dependency for git.{html,txt}Junio C Hamano Fri, 6 Apr 2007 05:17:20 +0000 (22:17 -0700)

Documentation: tighten dependency for git.{html,txt}

Every time _any_ documentation page changed, cmds-*.txt files
were regenerated, which caused git.{html,txt} to be remade. Try
not to update cmds-*.txt files if their new contents match the
old ones.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Makefile: iconv() on Darwin has the old interfaceArjen Laarhoven Fri, 6 Apr 2007 23:49:17 +0000 (01:49 +0200)

Makefile: iconv() on Darwin has the old interface

The libiconv on Darwin uses the old iconv() interface (2nd argument is a
const char **, instead of a char **). Add OLD_ICONV to the Darwin
variable definitions to handle this.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Acked-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

t5300-pack-object.sh: portability issue using /usr... Arjen Laarhoven Fri, 6 Apr 2007 23:49:03 +0000 (01:49 +0200)

t5300-pack-object.sh: portability issue using /usr/bin/stat

In the test 'compare delta flavors', /usr/bin/stat is used to get file size.
This isn't portable. There already is a dependency on Perl, use its '-s'
operator to get the file size.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-bisect: allow bisecting with only one bad commit.Junio C Hamano Fri, 6 Apr 2007 06:27:44 +0000 (23:27 -0700)

git-bisect: allow bisecting with only one bad commit.

This allows you to say:

git bisect start
git bisect bad $bad
git bisect next

to start bisection without knowing a good commit. This would
have you try a commit that is half-way since the beginning of
the history, which is rather wasteful if you already know a good
commit, but if you don't (or your history is short enough that
you do not care), there is no reason not to allow this.

Signed-off-by: Junio C Hamano <junkio@cox.net>

t6030: add a bit more tests to git-bisectJunio C Hamano Fri, 6 Apr 2007 05:52:37 +0000 (22:52 -0700)

t6030: add a bit more tests to git-bisect

Verify that git-bisect does not start before getting one bad and
one good commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>

t3200-branch.sh: small language nitArjen Laarhoven Fri, 6 Apr 2007 23:48:54 +0000 (01:48 +0200)

t3200-branch.sh: small language nit

Signed-off-by: Junio C Hamano <junkio@cox.net>

usermanual.txt: some capitalization nitsArjen Laarhoven Fri, 6 Apr 2007 23:48:36 +0000 (01:48 +0200)

usermanual.txt: some capitalization nits

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make builtin-branch.c handle the git config fileLars Hjemli Fri, 6 Apr 2007 12:13:00 +0000 (14:13 +0200)

Make builtin-branch.c handle the git config file

This moves the knowledge about .git/config usage out of refs.c and into
builtin-branch.c instead, which allows git-branch to update HEAD to point
at the moved branch before attempting to update the config file. It also
allows git-branch to exit with an error code if updating the config file
should fail.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

rename_ref(): only print a warning when config-file... Lars Hjemli Fri, 6 Apr 2007 08:33:06 +0000 (10:33 +0200)

rename_ref(): only print a warning when config-file update fails

If git_config_rename_section() fails, rename_ref() used to return 1, which
left HEAD pointing to an absent refs/heads file (since the actual renaming
had already occurred).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Distinguish branches by more than case in tests.Brian Gernhardt Fri, 6 Apr 2007 05:42:04 +0000 (01:42 -0400)

Distinguish branches by more than case in tests.

The renaming without config test changed a branch from q to Q, which
fails on non-case sensitive file systems. Change the test to use q
and q2.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Avoid composing too long "References" header.YOSHIFUJI Hideaki / 吉藤英明 Thu, 5 Apr 2007 23:50:24 +0000 (08:50 +0900)

Avoid composing too long "References" header.

The number of characters in a line MUST be no more than 998 characters,
and SHOULD be no more than 78 characters (RFC2822).
It is much safer to fold the header by ourselves.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Improve formating consistencyFrank Lichtenheld Fri, 6 Apr 2007 21:52:43 +0000 (23:52 +0200)

cvsimport: Improve formating consistency

Use ' ' syntax for all commandline options mentioned in text.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Reorder options in documentation for better... Frank Lichtenheld Fri, 6 Apr 2007 21:52:42 +0000 (23:52 +0200)

cvsimport: Reorder options in documentation for better understanding

The current order the options are documented in makes no sense
at all to me. Reorder them so that similar options are grouped
together and also order them somehwhat by importance.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Improve usage error reportingFrank Lichtenheld Fri, 6 Apr 2007 21:52:41 +0000 (23:52 +0200)

cvsimport: Improve usage error reporting

Actually tell the user what he did wrong in case of usage errors
instead of only printing the general usage information.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Improve documentation of CVSROOT and CVS... Frank Lichtenheld Fri, 6 Apr 2007 21:52:40 +0000 (23:52 +0200)

cvsimport: Improve documentation of CVSROOT and CVS module determination

Document the fact that git-cvsimport tries to find out CVSROOT from
CVS/Root and $ENV{CVSROOT} and CVS_module from CVS/Repository.

Also use ` ` syntax for all filenames for consistency.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: sync usage lines with existing optionsFrank Lichtenheld Fri, 6 Apr 2007 21:52:39 +0000 (23:52 +0200)

cvsimport: sync usage lines with existing options

Sync both the usage lines in the code and the asciidoc
documentation with the real list of options. While
all options seems to be documented in the asciidoc
document, not all of them were listed in the usage line.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-bisect: modernizationJunio C Hamano Fri, 6 Apr 2007 05:51:14 +0000 (22:51 -0700)

git-bisect: modernization

This slightly modernizes the bisect script to use show-ref/for-each-ref
instead of looking into $GIT_DIR/refs files directly.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Thu, 5 Apr 2007 23:34:51 +0000 (16:34 -0700)

Merge branch 'maint'

* maint:
Fix lseek(2) calls with args 2 and 3 swapped
Honor -p<n> when applying git diffs
Fix dependency of common-cmds.h
Fix renaming branch without config file
DESTDIR support for git/contrib/emacs
gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
Document --left-right option to rev-list.
Revert "builtin-archive: use RUN_SETUP"
rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.
rerere: make sorting really stable.
Fix t4200-rerere for white-space from "wc -l"

Fix lseek(2) calls with args 2 and 3 swappedDana How Thu, 5 Apr 2007 19:05:57 +0000 (12:05 -0700)

Fix lseek(2) calls with args 2 and 3 swapped

Signed-off-by: Junio C Hamano <junkio@cox.net>

Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel... Fernando J. Pereda Wed, 4 Apr 2007 20:42:33 +0000 (22:42 +0200)

Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Signed-off-by: Fernando J. Pereda <ferdy@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: bisect: "start" accepts one bad and... Christian Couder Thu, 5 Apr 2007 03:33:53 +0000 (05:33 +0200)

Documentation: bisect: "start" accepts one bad and many good commits

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Bisect: teach "bisect start" to optionally use one... Christian Couder Wed, 4 Apr 2007 05:12:02 +0000 (07:12 +0200)

Bisect: teach "bisect start" to optionally use one bad and many good revs.

One bad commit is fundamentally needed for bisect to run,
and if we beforehand know more good commits, we can narrow
the bisect space down without doing the whole tree checkout
every time we give good commits.

This patch implements:

git bisect start [<bad> [<good>...]] [--] [<pathspec>...]

as a short-hand for this command sequence:

git bisect start
git bisect bad $bad
git bisect good $good1 $good2...

On the other hand, there may be some confusion between revs
(<bad> and <good>...) and <pathspec>... if -- is not used
and if an invalid rev or a pathspec that looks like a rev is
given.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix passing of TCLTK_PATH to git-guiAlex Riesen Thu, 5 Apr 2007 19:31:53 +0000 (21:31 +0200)

Fix passing of TCLTK_PATH to git-gui

GNU make does not include environment variables by default
in its namespace. Just pass them in make command line.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Rename add_file_to_index() to add_file_to_cache()Junio C Hamano Mon, 2 Apr 2007 05:14:40 +0000 (22:14 -0700)

Rename add_file_to_index() to add_file_to_cache()

This function was not called "add_file_to_cache()" only because
an ancient program, update-cache, used that name as an internal
function name that does something slightly different. Now that
is gone, we can take over the better name.

The plan is to name all functions that operate on the default
index xxx_cache(). Later patches create a variant of them that
take an explicit parameter xxx_index(), and then turn
xxx_cache() functions into macros that use "the_index".

Signed-off-by: Junio C Hamano <junkio@cox.net>

Rename static variable write_index to update_index... Junio C Hamano Mon, 2 Apr 2007 05:46:06 +0000 (22:46 -0700)

Rename static variable write_index to update_index in builtin-apply.c

This is an internal variable used to tell if we need to write
out the resulting index.

I'll be introducing write_index() function which would collide
with it.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Rename internal function "add_file_to_cache" in builtin... Junio C Hamano Mon, 2 Apr 2007 05:07:26 +0000 (22:07 -0700)

Rename internal function "add_file_to_cache" in builtin-update-index.c

I'd like to consistently name all index-layer functions that
operate on the default index xxx_cache(), and this application
specific function interferes with the plan.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Propagate cache error internal to refresh_cache() via... Junio C Hamano Mon, 2 Apr 2007 04:34:34 +0000 (21:34 -0700)

Propagate cache error internal to refresh_cache() via parameter.

The function refresh_cache() is the only user of cache_errno
that switches its behaviour based on what internal function
refresh_cache_entry() finds; pass the error status back in a
parameter passed down to it, to get rid of the global variable
cache_errno.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix bogus error message from merge-recursive error... Junio C Hamano Mon, 2 Apr 2007 04:13:27 +0000 (21:13 -0700)

Fix bogus error message from merge-recursive error path

This error message should not usually trigger, but the function
make_cache_entry() called by add_cacheinfo() can return early
without calling into refresh_cache_entry() that sets cache_errno.

Also the error message had a wrong function name reported, and
it did not say anything about which path failed either.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Show binary file size change in diff --statAndy Parkins Wed, 4 Apr 2007 13:14:14 +0000 (13:14 +0000)

Show binary file size change in diff --stat

Previously, a binary file in the diffstat would show as:

some-binary-file.bin | Bin

The space after the "Bin" was never used. This patch changes binary
lines in the diffstat to be:

some-binary-file.bin | Bin 12345 -> 123456 bytes

The very nice "->" notation was suggested by Johannes Schindelin, and
shows the before and after sizes more clearly than "+" and "-" would.
If a size is 0 it's not shown (although it would probably be better to
treat no-file differently from zero-byte-file).

The user can see what changed in the binary file, and how big the new
file is. This is in keeping with the information in the rest of the
diffstat.

The diffstat_t members "added" and "deleted" were unused when the file
was binary, so this patch loads them with the file sizes in
builtin_diffstat(). These figures are then read in show_stats() when
the file is marked binary.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Honor -p<n> when applying git diffsShawn O. Pearce Wed, 4 Apr 2007 15:19:14 +0000 (11:19 -0400)

Honor -p<n> when applying git diffs

If the user is trying to apply a Git generated diff file and they
have specified a -p<n> option, where <n> is not 1, the user probably
has a good reason for doing this. Such as they are me, trying to
apply a patch generated in git.git for the git-gui subdirectory to
the git-gui.git repository, where there is no git-gui subdirectory
present.

Users shouldn't supply -p2 unless they mean it. But if they are
supplying it, they probably have thought about how to make this
patch apply to their working directory, and want to risk whatever
results may come from that.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix dependency of common-cmds.hJunio C Hamano Thu, 5 Apr 2007 22:03:48 +0000 (15:03 -0700)

Fix dependency of common-cmds.h

Say $(wildcard ...) when we mean it.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix lost-found to show commits only referenced by reflogsShawn O. Pearce Wed, 4 Apr 2007 14:46:14 +0000 (10:46 -0400)

Fix lost-found to show commits only referenced by reflogs

Prior to 1.5.0 the git-lost-found utility was useful to locate
commits that were not referenced by any ref. These were often
amends, or resets, or tips of branches that had been deleted.
Being able to locate a 'lost' commit and recover it by creating a
new branch was a useful feature in those days.

Unfortunately 1.5.0 added the reflogs to the reachability analysis
performed by git-fsck, which means that most commits users would
consider to be lost are still reachable through a reflog. So most
(or all!) commits are reachable, and nothing gets output from
git-lost-found.

Now git-fsck can be told to ignore reflogs during its reachability
analysis, making git-lost-found useful again to locate commits
that are no longer referenced by a ref itself, but may still be
referenced by a reflog.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

clean up and optimize nth_packed_object_sha1() usageNicolas Pitre Wed, 4 Apr 2007 20:49:04 +0000 (16:49 -0400)

clean up and optimize nth_packed_object_sha1() usage

Let's avoid the open coded pack index reference in pack-object and use
nth_packed_object_sha1() instead. This will help encapsulating index
format differences in one place.

And while at it there is no reason to copy SHA1's over and over while a
direct pointer to it in the index will do just fine.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix renaming branch without config fileGeert Bosch Thu, 5 Apr 2007 14:20:55 +0000 (10:20 -0400)

Fix renaming branch without config file

Make git_config_rename_section return success if no config file
exists. Otherwise, renaming a branch would abort, leaving the
repository in an inconsistent state.

[jc: test]

Signed-off-by: Geert Bosch <bosch@gnat.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

DESTDIR support for git/contrib/emacsVille Skyttä Thu, 5 Apr 2007 18:09:31 +0000 (21:09 +0300)

DESTDIR support for git/contrib/emacs

make install DESTDIR=... support for git/contrib/emacs

Signed-off-by: Ville Skyttä <scop@xemacs.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Fix bug in "blobdiff" view for split (e.g.... Jakub Narebski Thu, 5 Apr 2007 11:45:41 +0000 (13:45 +0200)

gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches

git_patchset_body needs patch generated with --full-index option to
detect split patches, meaning two patches which corresponds to single
difftree (raw diff) entry. An example of such situation is changing
type (mode) of a file, e.g. from plain file to symbolic link.

Add, in git_blobdiff, --full-index option to patch generating git diff
invocation, for the 'html' format output ("blobdiff" view).

"blobdiff_plain" still uses shortened sha1 in the extended git diff
header "index <hash>..<hash>[ <mode>]" line.

Noticed-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Document --left-right option to rev-list.Brian Gernhardt Thu, 5 Apr 2007 14:53:07 +0000 (10:53 -0400)

Document --left-right option to rev-list.

Explanation is paraphrased from "577ed5c... rev-list --left-right"

Signed-off-by: Junio C Hamano <junkio@cox.net>

Revert "builtin-archive: use RUN_SETUP"René Scharfe Thu, 5 Apr 2007 20:55:43 +0000 (22:55 +0200)

Revert "builtin-archive: use RUN_SETUP"

Commit 64edf4b2 cleaned up the initialization of git-archive,
at the cost of 'git-archive --list' now requiring a git repo.
This patch reverts the cleanup and documents the requirement
for this particular dirtyness in a test.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

rename contrib/hooks/post-receieve-email to contrib... Gerrit Pape Wed, 4 Apr 2007 11:52:12 +0000 (11:52 +0000)

rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.

$ git grep post-receieve-email
$ git grep post-receive-email
templates/hooks--post-receive:#. /usr/share/doc/git-core/contrib/hooks/post-receive-email
$

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

RPM spec: include git-p4 in the list of all packages.Junio C Hamano Wed, 4 Apr 2007 18:32:33 +0000 (11:32 -0700)

RPM spec: include git-p4 in the list of all packages.

Signed-off-by: Junio C Hamano <junkio@cox.net>

rerere: make sorting really stable.Junio C Hamano Wed, 4 Apr 2007 21:12:03 +0000 (14:12 -0700)

rerere: make sorting really stable.

The earlier code does not swap hunks when the beginning of the
first side is identical to the whole of the second side. In
such a case, the first one should sort later.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix t4200-rerere for white-space from "wc -l"Brian Gernhardt Wed, 4 Apr 2007 19:39:05 +0000 (15:39 -0400)

Fix t4200-rerere for white-space from "wc -l"

On OS X, wc outputs 6 spaces before the number of lines, so the test
expecting the string "10" failed. Do not quote $cmd to strip away
the problematic whitespace as other tests do.

Also fix the grammar of the test name while making changes to it.
There's only one preimage, so it's "has", not "have".

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-gui: Brown paper bag fix division by 0 in blameShawn O. Pearce Wed, 4 Apr 2007 16:08:46 +0000 (12:08 -0400)

git-gui: Brown paper bag fix division by 0 in blame

If we generate a blame status string before we have obtained
any annotation data at all from the input file, or if the input
file is empty, our total_lines will be 0. This causes a division
by 0 error when we blindly divide by the 0 to compute the total
percentage of lines loaded. Instead we should report 0% done.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Always bind the return key to the default buttonShawn O. Pearce Wed, 4 Apr 2007 15:45:33 +0000 (11:45 -0400)

Always bind the return key to the default button

If a dialog/window has a default button registered not every
platform associates the return key with that button, but all
users do. We have to register the binding of the return key
ourselves to make sure the user's expectations of pressing
return will activate the default button are met.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Do not break git-gui messages into multiple lines.Eygene Ryabinkin Tue, 27 Mar 2007 10:31:55 +0000 (14:31 +0400)

Do not break git-gui messages into multiple lines.

Many git-gui messages were broken into a multiple lines to make
good paragraph width. Unfortunately in reality it breaks the paragraph
width completely, because the dialog window width does not coincide
with the paragraph width created by the current font.

Tcl/Tk's standard dialog boxes are breaking the long lines
automatically, so it is better to make long lines and let the
interpreter do the job.

Signed-off-by: Eygene Ryabinkin <rea-git@codelabs.ru>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Improve look-and-feel of the git-gui tool.Eygene Ryabinkin Tue, 27 Mar 2007 10:31:02 +0000 (14:31 +0400)

Improve look-and-feel of the git-gui tool.

Made the default buttons on the dialog active and focused upon the
dialog appearence.

Bound 'Escape' and 'Return' keys to the dialog dismissal where it
was appropriate: mainly for dialogs with only one button and no
editable fields, but on console output dialogs as well.

Signed-off-by: Eygene Ryabinkin <rea-git@codelabs.ru>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Teach git-gui to use the user-defined UI font everywhere.Eygene Ryabinkin Tue, 27 Mar 2007 10:29:08 +0000 (14:29 +0400)

Teach git-gui to use the user-defined UI font everywhere.

Some parts of git-gui were not respecting the default GUI font.
Most of them were catched and fixed.

Signed-off-by: Eygene Ryabinkin <rea-git@codelabs.ru>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Allow wish interpreter to be defined with TCLTK_PATHEygene Ryabinkin Wed, 4 Apr 2007 15:31:49 +0000 (11:31 -0400)

Allow wish interpreter to be defined with TCLTK_PATH

Makefile got one external option:
- TCLTK_PATH: the path to the Tcl/Tk interpreter.

Users (or build wrappers) may set this variable to the
location of the wish executable.

Signed-off-by: Eygene Ryabinkin <rea-git@codelabs.ru>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-svn: bail out on incorrect command-line optionsEric Wong Tue, 3 Apr 2007 08:57:08 +0000 (01:57 -0700)

git-svn: bail out on incorrect command-line options

"git svn log" is the only command that needs the pass-through
option in Getopt::Long; otherwise we will bail out and let the
user know something is wrong.

Also, avoid printing out unaccepted mixed-case options (that
are reserved for the command-line) such as --useSvmProps
in the usage() function.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Quote hash keys, and do not use barewords keysJakub Narebski Sun, 1 Apr 2007 20:22:21 +0000 (22:22 +0200)

gitweb: Quote hash keys, and do not use barewords keys

Ensure that in all references to an element of a hash, the
key is singlequoted, instead of using bareword: use $hash{'key'}
instead of $hash{key}

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Whitespace cleanup - tabs are for indent, space... Jakub Narebski Sun, 1 Apr 2007 20:21:38 +0000 (22:21 +0200)

gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)

Code should be look the same way, regardless of tab size.
Use tabs for indent, but spaces for align.

Indent continued part of command spanning multiple lines, but only once.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix switching to a branch with D/F when current branch... Junio C Hamano Fri, 16 Mar 2007 06:25:22 +0000 (23:25 -0700)

Fix switching to a branch with D/F when current branch has file D.

This loosens the over-eager verify_absent() check that gets
upset to find directory D in the current working tree when
switching to a branch that has a file there. The check needs to
make sure that we do not lose precious working tree files as a
result of removing directory D and replacing it with the file
from the other branch, which is a tad expensive but this is a
less common case.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix twoway_merge that passed d/f conflict marker to... Junio C Hamano Mon, 2 Apr 2007 23:29:56 +0000 (16:29 -0700)

Fix twoway_merge that passed d/f conflict marker to merged_entry().

When switching from one tree to another, we should not send a
marker that says "this file does not exist in the new tree -- I
am a placeholder to tell you that, and not a real blob" down to
merged_entry() as the result of the merge.

Fix read-tree --prefix=dir/.Junio C Hamano Mon, 2 Apr 2007 19:40:19 +0000 (12:40 -0700)

Fix read-tree --prefix=dir/.

The existing code is not wrong per-se, but it started scanning the index
from a location that does not match the tree being read, and wasted
cycles.

Signed-off-by: Junio C Hamano <junkio@cox.net>

unpack-trees: get rid of *indpos parameter.Junio C Hamano Mon, 2 Apr 2007 22:06:59 +0000 (15:06 -0700)

unpack-trees: get rid of *indpos parameter.

This variable keeps track of which entry in the original index
the traversal is looking at, and belongs to the unpack_trees_options
structure along with other traversal status information.

Signed-off-by: Junio C Hamano <junkio@cox.net>

unpack_trees.c: pass unpack_trees_options structure... Junio C Hamano Mon, 2 Apr 2007 07:06:12 +0000 (00:06 -0700)

unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.

Other decision functions, deleted_entry() and merged_entry() take one as
their parameter, and this function should. I'll be introducing a separate
index to build the result in, and am planning to pass it as the part of the
structure.

Signed-off-by: Junio C Hamano <junkio@cox.net>

add_cache_entry(): removal of file foo does not conflic... Junio C Hamano Fri, 30 Mar 2007 08:55:37 +0000 (01:55 -0700)

add_cache_entry(): removal of file foo does not conflict with foo/bar

Similarly, removal of file foo/bar does not conflict with a file foo.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/bisect'Junio C Hamano Wed, 4 Apr 2007 07:10:21 +0000 (00:10 -0700)

Merge branch 'jc/bisect'

* jc/bisect:
make the previous optimization work also on path-limited rev-list --bisect
rev-list --bisect: Fix "halfway" optimization.
t6004: add a bit more path optimization test.
git-rev-list --bisect: optimization
git-rev-list: add --bisect-vars option.
t6002: minor spelling fix.

Merge branch 'fl/doc'Junio C Hamano Wed, 4 Apr 2007 07:10:13 +0000 (00:10 -0700)

Merge branch 'fl/doc'

* fl/doc:
Documentation: unbreak user-manual.
Documentation: Add version information to man pages
Documentation: Replace @@GIT_VERSION@@ in documentation

Merge branch 'post1.5.1/blame.el'Junio C Hamano Wed, 4 Apr 2007 07:10:03 +0000 (00:10 -0700)

Merge branch 'post1.5.1/blame.el'

* post1.5.1/blame.el:
git-blame.el: pick a set of random colors for each git-blame turn
git-blame.el: separate git-blame-mode to ease maintenance

Merge branch 'post1.5.1/tcltk'Junio C Hamano Wed, 4 Apr 2007 07:09:52 +0000 (00:09 -0700)

Merge branch 'post1.5.1/tcltk'

* post1.5.1/tcltk:
Optional Tck/Tk: ignore generated files.
Eliminate checks of user-specified Tcl/Tk interpreter.
Rewrite Tcl/Tk interpreter path for the GUI tools.
Add --with-tcltk and --without-tcltk to configure.
NO_TCLTK

Merge branch 'post1.5.1/p4'Junio C Hamano Wed, 4 Apr 2007 07:09:36 +0000 (00:09 -0700)

Merge branch 'post1.5.1/p4'

* post1.5.1/p4:
Added correct Python path to the RPM specfile.
Remove unused WITH_OWN_SUBPROCESS_PY from RPM spec
Added git-p4 package to the list of git RPMs.
Add the WITH_P4IMPORT knob to the Makefile.

Merge branch 'lt/dirwalk'Junio C Hamano Wed, 4 Apr 2007 07:09:32 +0000 (00:09 -0700)

Merge branch 'lt/dirwalk'

* lt/dirwalk:
Optimize directory listing with pathspec limiter.

git-read-tree --index-output=<file>Junio C Hamano Sun, 1 Apr 2007 06:27:41 +0000 (23:27 -0700)

git-read-tree --index-output=<file>

This corrects the interface mistake of the previous one, and
gives a command line parameter to the only plumbing command that
currently needs it: "git-read-tree".

We can add the calls to set_alternate_index_output() to other
plumbing commands that update the index if/when needed.

Signed-off-by: Junio C Hamano <junkio@cox.net>

_GIT_INDEX_OUTPUT: allow plumbing to output to an alter... Junio C Hamano Sun, 1 Apr 2007 06:09:02 +0000 (23:09 -0700)

_GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.

When defined, this allows plumbing commands that update the
index (add, apply, checkout-index, merge-recursive, mv,
read-tree, rm, update-index, and write-tree) to write their
resulting index to an alternative index file while holding a
lock to the original index file. With this, git-commit that
jumps the index does not have to make an extra copy of the index
file, and more importantly, it can do the update while holding
the lock on the index.

However, I think the interface to let an environment variable
specify the output is a mistake, as shown in the documentation.
If a curious user has the environment variable set to something
other than the file GIT_INDEX_FILE points at, almost everything
will break. This should instead be a command line parameter to
tell these plumbing commands to write the result in the named
file, to prevent stupid mistakes.

Signed-off-by: Junio C Hamano <junkio@cox.net>

checkout: allow detaching to HEAD even when switching... Junio C Hamano Thu, 29 Mar 2007 08:02:50 +0000 (01:02 -0700)

checkout: allow detaching to HEAD even when switching to the tip of a branch

You cannot currently checkout the tip of an existing branch
without moving to the branch.

This allows you to detach your HEAD and place it at such a
commit, with:

$ git checkout master^0

Signed-off-by: Junio C Hamano <junkio@cox.net>

GIT 1.5.1 v1.5.1Junio C Hamano Wed, 4 Apr 2007 05:47:01 +0000 (22:47 -0700)

GIT 1.5.1

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge 1.5.0.7 inJunio C Hamano Wed, 4 Apr 2007 04:52:14 +0000 (21:52 -0700)

Merge 1.5.0.7 in

Signed-off-by: Junio C Hamano <junkio@cox.net>