Code

git.git
17 years agoBypass expensive content comparsion during rename detection.
Shawn O. Pearce [Thu, 14 Dec 2006 10:07:46 +0000 (05:07 -0500)]
Bypass expensive content comparsion during rename detection.

When comparing file contents during the second loop through a rename
detection attempt we can skip the expensive byte-by-byte comparsion
if both source and destination files have valid SHA1 values.  This
improves performance by avoiding either an expensive open/mmap to
read the working tree copy, or an expensive inflate of a blob object.

Unfortunately we still have to at least initialize the sizes of the
source and destination files even if the SHA1 values don't match.
Failing to initialize the sizes causes a number of test cases to fail
and start reporting different copy/rename behavior than was expected.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: correctly display fatal() error messages
Eric Wong [Tue, 12 Dec 2006 22:47:02 +0000 (14:47 -0800)]
git-svn: correctly display fatal() error messages

If I wanted to print $@, I'd pass $@ to fatal().  This looks like
a stupid typo on my part.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: exit with status 1 for test failures
Eric Wong [Sat, 25 Nov 2006 06:38:18 +0000 (22:38 -0800)]
git-svn: exit with status 1 for test failures

Some versions of the SVN libraries cause die() to exit with 255,
and 40cf043389ef4cdf3e56e7c4268d6f302e387fa0 tightened up
test_expect_failure to reject return values >128.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoClarify fetch error for missing objects.
Alex Riesen [Tue, 12 Dec 2006 17:34:02 +0000 (18:34 +0100)]
Clarify fetch error for missing objects.

Otherwise there're such things like:

    Cannot obtain needed none 9a6e87b60dbd2305c95cecce7d9d60f849a0658d
    while processing commit 0000000000000000000000000000000000000000.

which while looks weird. What is the none needed for?

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMove Fink and Ports check to after config file
Brian Gernhardt [Tue, 12 Dec 2006 17:01:47 +0000 (12:01 -0500)]
Move Fink and Ports check to after config file

Putting NO_FINK or NO_DARWIN_PORTS in config.mak is ignored because the
checks are done before the config is included.

Signed-off-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMake sure the empty tree exists when needed in merge-recursive.
Shawn O. Pearce [Thu, 7 Dec 2006 10:17:07 +0000 (05:17 -0500)]
Make sure the empty tree exists when needed in merge-recursive.

There are some baseless merge cases where git-merge-recursive will
try to compare one of the branches against the empty tree.  However
most projects won't have the empty tree object in their object database
as Git does not normally create empty tree objects.  If the empty tree
object is missing then the merge process will die, as it cannot load the
object from the database.  The error message may make the user think that
their database is corrupt when its actually not.

So instead we should just create the empty tree object whenever it is
needed.  If the object already exists as a loose object then no harm
done.  Otherwise that loose object will be pruned away later by either
git-prune or git-prune-packed.

Thanks goes to Junio for suggesting this fix.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDon't use memcpy when source and dest. buffers may overlap
Jim Meyering [Mon, 11 Dec 2006 18:06:34 +0000 (19:06 +0100)]
Don't use memcpy when source and dest. buffers may overlap

git-index-pack can call memcpy with overlapping source and destination
buffers.  The patch below makes it use memmove instead.

If you want to demonstrate a failure, add the following two lines

+               if (input_offset < input_len)
+                 abort ();

before the existing memcpy call (shown in the patch below),
and then run this:

  (cd t; sh ./t5500-fetch-pack.sh)

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agono need to install manpages as executable
Chris Wright [Mon, 11 Dec 2006 07:39:32 +0000 (23:39 -0800)]
no need to install manpages as executable

No need to install manpages as executable.  Noticed by Ville Skytt\e,Ad\e(B.

Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsserver: Avoid miscounting bytes in Perl v5.8.x
Martin Langhoff [Thu, 7 Dec 2006 03:38:50 +0000 (16:38 +1300)]
cvsserver: Avoid miscounting bytes in Perl v5.8.x

At some point between v5.6 and 5.8 Perl started to assume its input,
output and filehandles are UTF-8. This breaks the counting of bytes
for the CVS protocol, resulting in the client expecting less data
than we actually send, and storing truncated files.

Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-reset to remove "$GIT_DIR/MERGE_MSG" v1.4.4.2
Junio C Hamano [Tue, 5 Dec 2006 03:44:40 +0000 (19:44 -0800)]
git-reset to remove "$GIT_DIR/MERGE_MSG"

An earlier commit a9cb3c6e changed git-commit to use the
contents of MERGE_MSG even when we do not have MERGE_HEAD (the
rationale is in its log message).

However, the change tricks the following sequence to include a
merge message in a completely unrelated commit:

$ git pull somewhere
: oops, the conflicts are too much.  forget it.
        $ git reset --hard
        : work work work
        $ git commit

To fix this confusion, this patch makes "git reset" to remove
the leftover MERGE_MSG that was prepared when the user abandoned
the merge.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Acked-by: Luben Tuikov <ltuikov@yahoo.com
17 years agounpack-trees: make sure "df_conflict_entry.name" is NUL terminated.
Junio C Hamano [Mon, 4 Dec 2006 10:11:39 +0000 (02:11 -0800)]
unpack-trees: make sure "df_conflict_entry.name" is NUL terminated.

The structure that ends with a flexible array member (or 0
length array with older GCC) "char name[FLEX_ARRAY]" is
allocated on the stack and we use it after clearing its entire
size with memset.  That does not guarantee that "name" is
properly NUL terminated as we intended on platforms with more
forgiving structure alignment requirements.

Reported breakage on m68k by Roman Zippel.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoreceive-pack: do not insist on fast-forward outside refs/heads/
Junio C Hamano [Mon, 4 Dec 2006 22:24:12 +0000 (14:24 -0800)]
receive-pack: do not insist on fast-forward outside refs/heads/

Especially refs/tags/ hierarchy should match what git-fetch
checks.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-mv: search more precisely for source directory in index
Johannes Schindelin [Sun, 3 Dec 2006 19:42:47 +0000 (20:42 +0100)]
git-mv: search more precisely for source directory in index

A move of a directory should find the entries in the index by
searching for the name _including_ the slash. Otherwise, the
directory can be shadowed by a file when it matches the prefix
and is lexicographically smaller, e.g. "ab.c" shadows "ab/".

Noticed by Sergey Vlasov.

[jc: added Sergey's original reproduction recipe as a test case
 at the end of t7001.]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: avoid fetching files twice in the same revision
Eric Wong [Sun, 3 Dec 2006 00:19:31 +0000 (16:19 -0800)]
git-svn: avoid fetching files twice in the same revision

SVN is not entirely consistent in returning log information and
sometimes returns file information when adding subdirectories,
and sometimes it does not (only returning information about the
directory that was added).  This caused git-svn to occasionally
add a file to the list of files to be fetched twice.  Now we
change the data structure to be hash to avoid repeated fetches.

As of now (in master), this only affects repositories fetched
without deltas enabled (file://, and when manually overriden
with GIT_SVN_DELTA_FETCH=0); so this bug mainly affects users of
1.4.4.1 and maint.

Thanks to Florian Weimer for reporting this bug.

[jc: backported for maint]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocument git-repo-config --bool/--int options.
Andy Parkins [Wed, 29 Nov 2006 08:25:40 +0000 (08:25 +0000)]
Document git-repo-config --bool/--int options.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agotutorial: talk about user.name early and don't start with commit -a
Junio C Hamano [Wed, 29 Nov 2006 08:17:01 +0000 (00:17 -0800)]
tutorial: talk about user.name early and don't start with commit -a

Introducing yourself to git early would be a good idea; otherwise
the user may not find the mistake until much later when "git log"
is learned.

Teaching "commit -a" without saying that it is a shortcut for
listing the paths to commit leaves the user puzzled.  Teach the
form with explicit paths first.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-blame: fix rev parameter handling.
Alex Riesen [Wed, 15 Nov 2006 21:52:25 +0000 (22:52 +0100)]
git-blame: fix rev parameter handling.

We lacked "--" termination in the underlying init_revisions() call
which made it impossible to specify a revision that happens to
have the same name as an existing file.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit blame -C: fix output format tweaks when crossing file boundary.
Junio C Hamano [Wed, 29 Nov 2006 06:29:18 +0000 (22:29 -0800)]
git blame -C: fix output format tweaks when crossing file boundary.

We used to get the case that more than two paths came from the
same commit wrong when computing the output width and deciding
to turn on --show-name option automatically.  When we find that
lines that came from a path that is different from what we
started digging from, we should always turn --show-name on, and
we should count the name length for all files involved.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoIncrease length of function name buffer
Andy Parkins [Thu, 23 Nov 2006 10:05:17 +0000 (10:05 +0000)]
Increase length of function name buffer

In xemit.c:xdl_emit_diff() a buffer for showing the function name as
commentary is allocated; this buffer was 40 characters.  This is a bit
small; particularly for C++ function names where there is often an
identical prefix (like void LongNamespace::LongClassName) on multiple
functions, which makes the context the same everywhere.  In other words
the context is useless.  This patch increases that buffer to 80
characters - which may still not be enough, but is better

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-svn: preserve uncommitted changes after dcommit
Eric Wong [Thu, 23 Nov 2006 22:54:05 +0000 (14:54 -0800)]
git-svn: preserve uncommitted changes after dcommit

Using dcommit could cause the user to lose uncommitted changes
during the reset --hard operation, so change it to reset --mixed.

If dcommit chooses the rebase path, then git-rebase will already
error out when local changes are made.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-svn: correctly handle revision 0 in SVN repositories
Eric Wong [Thu, 23 Nov 2006 22:54:04 +0000 (14:54 -0800)]
git-svn: correctly handle revision 0 in SVN repositories

some SVN repositories have a revision 0 (committed by no author
and no date) when created; so when we need to ensure that we
check any revision variables are defined, and not just
non-zero.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-svn: error out from dcommit on a parent-less commit
Eric Wong [Thu, 23 Nov 2006 22:54:03 +0000 (14:54 -0800)]
git-svn: error out from dcommit on a parent-less commit

dcommit would unconditionally append "~1" to a commit in order
to generate a diff.  Now we generate a meaningful error message
if we try to generate an impossible diff.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoarchive-zip: don't use sizeof(struct ...)
René Scharfe [Thu, 23 Nov 2006 22:02:37 +0000 (23:02 +0100)]
archive-zip: don't use sizeof(struct ...)

We can't rely on sizeof(struct zip_*) returning the sum of
all struct members.  At least on ARM padding is added at the
end, as Gerrit Pape reported.  This fixes the problem but
still lets the compiler do the summing by introducing
explicit padding at the end of the structs and then taking
its offset as the combined size of the preceding members.

As Junio correctly notes, the _end[] marker array's size
must be greater than zero for compatibility with compilers
other than gcc.  The space wasted by the markers can safely
be neglected because we only have one instance of each
struct, i.e. in sum 3 wasted bytes on i386, and 0 on ARM. :)

We still rely on the compiler to not add padding between the
struct members, but that's reasonable given that all of them
are unsigned char arrays.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoGIT 1.4.4.1 v1.4.4.1
Junio C Hamano [Thu, 23 Nov 2006 00:57:34 +0000 (16:57 -0800)]
GIT 1.4.4.1

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agotrust-executable-bit: fix breakage for symlinks
Junio C Hamano [Thu, 23 Nov 2006 00:33:32 +0000 (16:33 -0800)]
trust-executable-bit: fix breakage for symlinks

An earlier commit f28b34a broke symlinks when trust-executable-bit
is not set because it incorrectly assumed that everything was a
regular file.

Reported by Juergen Ruehle.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMove --pretty options into Documentation/pretty-formats.txt
Chris Riddoch [Tue, 21 Nov 2006 23:49:15 +0000 (16:49 -0700)]
Move --pretty options into Documentation/pretty-formats.txt

Asciidoc-include it into the manuals for programs that use the
--pretty command-line option, for consistency among the docs.

This describes all the pretty-formats currently listed in the cmit_fmt
enum in commit.h, and also briefly describes the presence and format
of the 'Merge: ' line in some pretty formats.

There's a hedge that limiting your view of history can affect what
goes in the Merge: line, and that --abbrev/--no-abbrev do nothing to
the 'raw' format.

Signed-off-by: Chris Riddoch <chris@syntacticsugar.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDoc: Make comment about merging in tutorial.txt more clear
Paolo Ciarrocchi [Mon, 20 Nov 2006 20:29:41 +0000 (21:29 +0100)]
Doc: Make comment about merging in tutorial.txt more clear

Rephrased a sentence in order to make more clear the concept of
pull . branch

Signed-off-by: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoarchive: use setvbuf() instead of setlinebuf()
Michal Rokos [Tue, 21 Nov 2006 22:19:28 +0000 (23:19 +0100)]
archive: use setvbuf() instead of setlinebuf()

This tiny patch makes GIT compile again on HP-UX 11i.

[jc: The setlinebuf() is described as unportable to BSD before
 4.2; it's not even in POSIX, while setvbuf() is in ISO C.]

Signed-off-by: Michal Rokos <michal.rokos@nextsoft.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoTeach SubmittingPatches about git-commit -s
Paolo Ciarrocchi [Tue, 21 Nov 2006 18:55:20 +0000 (19:55 +0100)]
Teach SubmittingPatches about git-commit -s

As discussed on git mailing list let's teach the reader about
the possiblity to have automatically signed off the commit running
the git-commit -s command

Signed-off-by: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodo_for_each_ref: perform the same sanity check for leftovers.
Junio C Hamano [Sun, 19 Nov 2006 06:13:33 +0000 (22:13 -0800)]
do_for_each_ref: perform the same sanity check for leftovers.

An earlier commit b37a562a added a check to see if the ref
points at a valid object (as a part of 'negative ref' support
which we currently do not use), but did so only while iterating
over both packed and loose refs, and forgot to apply the same
check while iterating over the remaining ones.

We might want to replace the "if null then omit it" check with
"eh --- what business does a 0{40} value have here?" complaint
later since we currently do not use negative refs, but that is
a separate issue.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-fetch: follow lightweit tags as well.
Junio C Hamano [Sun, 19 Nov 2006 05:39:17 +0000 (21:39 -0800)]
git-fetch: follow lightweit tags as well.

This side-ports commit fd19f620 from Cogito, in which I fixed
exactly the same bug.  Somehow nobody noticed this for a long
time in git.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocumentation: Correct alternates documentation, document http-alternates
Petr Baudis [Sat, 18 Nov 2006 23:30:15 +0000 (00:30 +0100)]
Documentation: Correct alternates documentation, document http-alternates

For one, the documentation invalidly claimed that the paths have to be
absolute when that's not the case and in fact there is a very valid reason
not to use absolute paths (documented the reason as well).

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocumentation: Define symref and update HEAD description
Petr Baudis [Sat, 18 Nov 2006 19:44:08 +0000 (20:44 +0100)]
Documentation: Define symref and update HEAD description

HEAD was still described as a symlink instead of a symref.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocument git-runstatus
Rene Scharfe [Sat, 18 Nov 2006 14:15:49 +0000 (15:15 +0100)]
Document git-runstatus

I copied most of the text from git-status.txt.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-apply: slightly clean up bitfield usage
Rene Scharfe [Sat, 18 Nov 2006 12:07:09 +0000 (13:07 +0100)]
git-apply: slightly clean up bitfield usage

This patch fixes a sparse warning about inaccurate_eof being a
"dubious one-bit signed bitfield", makes three more binary
variables members of this (now unsigned) bitfield and adds a
short comment to indicate the nature of two ternary variables.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agosparse fix: Using plain integer as NULL pointer
Rene Scharfe [Sat, 18 Nov 2006 12:06:56 +0000 (13:06 +0100)]
sparse fix: Using plain integer as NULL pointer

Z_NULL is defined as 0, use a proper NULL pointer in its stead.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agosparse fix: non-ANSI function declaration
Rene Scharfe [Sat, 18 Nov 2006 12:07:06 +0000 (13:07 +0100)]
sparse fix: non-ANSI function declaration

The declaration of discard_cache() in cache.h already has its "void".

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-apply: Documentation typo fix
Petr Baudis [Sat, 18 Nov 2006 05:05:11 +0000 (06:05 +0100)]
git-apply: Documentation typo fix

inacurate -> inaccurate, sorry if it was a pun. ;-)

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoFix git-for-each-refs broken for tags
Petr Baudis [Sat, 18 Nov 2006 02:56:52 +0000 (03:56 +0100)]
Fix git-for-each-refs broken for tags

Unfortunately, git-for-each-refs is currently unusable for peeking into tag
comments, since it uses freed pointers, so it just prints out all sort of
garbage.

This makes it strdup() contents and body values.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years ago"git fmt-merge-msg" SIGSEGV
Linus Torvalds [Fri, 17 Nov 2006 06:57:20 +0000 (22:57 -0800)]
"git fmt-merge-msg" SIGSEGV

Ok, this is a _really_ stupid case, and I don't think it matters, but hey,
we should never SIGSEGV.

Steps to reproduce:

mkdir duh
cd duh
git init-db
git-fmt-merge-msg < /dev/null

will cause a SIGSEGV in cmd_fmt_merge_msg(), because we're doing a
strncmp() with a NULL current_branch.

And yeah, it's an insane schenario, and no, it doesn't really matter. The
only reason I noticed was that a broken version of my "git pull" into an
empty directory would cause this.

This silly patch just replaces the SIGSEGV with a controlled exit with an
error message.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-pull: allow pulling into an empty repository
Linus Torvalds [Thu, 16 Nov 2006 19:47:22 +0000 (11:47 -0800)]
git-pull: allow pulling into an empty repository

We used to complain that we cannot merge anything we fetched
with a local branch that does not exist yet.  Just treat the
case as a natural extension of fast forwarding and make the
local branch'es tip point at the same commit we just fetched.
After all an empty repository without an initial commit is an
ancestor of any commit.

[jc: I added a trivial test.  We've become sloppy but we should
 stick to the discipline of covering new behaviour with new
 tests. ]

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoconvert-objects: set _XOPEN_SOURCE to 600
Junio C Hamano [Wed, 15 Nov 2006 22:57:47 +0000 (14:57 -0800)]
convert-objects: set _XOPEN_SOURCE to 600

Otherwise OpenBSD header files drop S_ISLNK() definition which is used in
an inline defined in cache.h

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRun "git repack -a -d" once more at end, if there's 1MB or more of not-packed data.
Jim Meyering [Wed, 15 Nov 2006 20:15:44 +0000 (21:15 +0100)]
Run "git repack -a -d" once more at end, if there's 1MB or more of not-packed data.

Although I converted upstream coreutils to git last month, I just
reconverted coreutils once again, as a test, and ended up with a
git repository of about 130MB (contrast with my packed git repo of
size 52MB).  That was because there were a lot of commits (but < 1024)
after the final automatic "git-repack -a -d".

Running a final
  git-repack -a -d && git-prune-packed
cut the final repository size down to the expected size.

So this looks like an easy way to improve git-cvsimport.
Just run "git repack ..." at the end if there's more than
some reasonable amount of not-packed data.

My choice of 1MB is a little arbitrarily.  I wouldn't mind missing
the minimal repo size by 1MB.  At the other end of the spectrum,
it's probably not worthwhile to pack everything when the total
repository size is less than 1MB.

Here's the patch:

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Put back shortlog instead of graphiclog in the project list.
Alexandre Julliard [Wed, 15 Nov 2006 20:37:50 +0000 (21:37 +0100)]
gitweb: Put back shortlog instead of graphiclog in the project list.

Looks like a repo.or.cz-specific change slipped in.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-checkout: allow pathspec to recover lost working tree directory
Junio C Hamano [Wed, 15 Nov 2006 18:54:10 +0000 (10:54 -0800)]
git-checkout: allow pathspec to recover lost working tree directory

It is often wanted on the #git channel that this were to work to
recover removed directory:

rm -fr Documentation
git checkout -- Documentation
git checkout HEAD -- Documentation ;# alternatively

Now it does.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-checkout: do not allow -f and -m at the same time.
Junio C Hamano [Wed, 15 Nov 2006 18:46:10 +0000 (10:46 -0800)]
git-checkout: do not allow -f and -m at the same time.

Instead of silently ignoring one over the other, complain on
this incompatible combination.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoSeek back to current filepos when mmap()ing with NO_MMAP
Johannes Schindelin [Wed, 15 Nov 2006 16:27:54 +0000 (17:27 +0100)]
Seek back to current filepos when mmap()ing with NO_MMAP

"git-index-pack --fix-thin" relies on mmap() not changing the current
file position (otherwise the pack will be corrupted when writing the
final SHA1). Meet that expectation.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoGIT 1.4.4 v1.4.4
Junio C Hamano [Wed, 15 Nov 2006 06:11:26 +0000 (22:11 -0800)]
GIT 1.4.4

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Mon, 13 Nov 2006 22:30:39 +0000 (14:30 -0800)]
Merge branch 'maint'

* maint:
  Rework cvsexportcommit to handle binary files for all cases.
  Catch errors when writing an index that contains invalid objects.
  test-lib.sh: A command dying due to a signal is an unexpected failure.
  git-update-index(1): fix use of quoting in section title

18 years agoRework cvsexportcommit to handle binary files for all cases.
Robin Rosenberg [Sun, 12 Nov 2006 15:29:42 +0000 (16:29 +0100)]
Rework cvsexportcommit to handle binary files for all cases.

Also adds test cases for adding removing and deleting
binary and text files plus two tests for the checks on
binary files.

Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoCatch errors when writing an index that contains invalid objects.
Johannes Sixt [Mon, 13 Nov 2006 13:50:00 +0000 (13:50 +0000)]
Catch errors when writing an index that contains invalid objects.

If git-write-index is called without --missing-ok, it reports invalid
objects that it finds in the index. But without this patch it dies
right away or may run into an infinite loop.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agotest-lib.sh: A command dying due to a signal is an unexpected failure.
Johannes Sixt [Mon, 13 Nov 2006 13:50:04 +0000 (13:50 +0000)]
test-lib.sh: A command dying due to a signal is an unexpected failure.

When test_expect_failure detects that a command failed, it still has to
treat a program that crashed from a signal as unexpected failure.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-update-index(1): fix use of quoting in section title
Jonas Fonseca [Sun, 12 Nov 2006 21:28:43 +0000 (22:28 +0100)]
git-update-index(1): fix use of quoting in section title

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoGIT 1.4.4-rc2 v1.4.4-rc2
Junio C Hamano [Sun, 12 Nov 2006 02:22:31 +0000 (18:22 -0800)]
GIT 1.4.4-rc2

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Sun, 12 Nov 2006 02:30:31 +0000 (18:30 -0800)]
Merge branch 'maint'

* maint:
  git-cvsserver: read from git with -z to get non-ASCII pathnames.

18 years agogit-cvsserver: read from git with -z to get non-ASCII pathnames. v1.4.3.5
Junio C Hamano [Fri, 10 Nov 2006 19:53:41 +0000 (11:53 -0800)]
git-cvsserver: read from git with -z to get non-ASCII pathnames.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Sat, 11 Nov 2006 22:49:25 +0000 (14:49 -0800)]
Merge branch 'maint'

* maint:
  path-list: fix path-list-insert return value

18 years agopath-list: fix path-list-insert return value
Junio C Hamano [Sat, 11 Nov 2006 22:45:35 +0000 (14:45 -0800)]
path-list: fix path-list-insert return value

When path-list-insert is called on an existing path, it returned an
unrelated element in the list.  Luckily most of the callers are
ignoring the return value, but merge-recursive uses it at three places
and this would have resulted in a bogus rename detection.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-annotate: fix -S on graft file with comments.
Junio C Hamano [Fri, 10 Nov 2006 21:39:01 +0000 (13:39 -0800)]
git-annotate: fix -S on graft file with comments.

The graft file can contain comment lines and read_graft_line can
return NULL for such an input, which should be skipped by the
reader.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-annotate: no need to exec blame; it is built-in now.
Junio C Hamano [Fri, 10 Nov 2006 21:36:44 +0000 (13:36 -0800)]
git-annotate: no need to exec blame; it is built-in now.

18 years agoMerge branch 'maint'
Junio C Hamano [Thu, 9 Nov 2006 23:08:19 +0000 (15:08 -0800)]
Merge branch 'maint'

* maint:
  git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.
  git-svn: fix dcommit losing changes when out-of-date from svn
  git-svn: don't die on rebuild when --upgrade is specified
  git-svn: avoid printing filenames of files we're not tracking

18 years agogit-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.
Robert Shearman [Tue, 3 Oct 2006 16:29:26 +0000 (17:29 +0100)]
git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.

This reduces the number of conflicts when rebasing after a series of
patches to the same piece of code is committed upstream.

Signed-off-by: Robert Shearman <rob@codeweavers.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocumentation: move blame examples
Junio C Hamano [Thu, 9 Nov 2006 18:44:56 +0000 (10:44 -0800)]
Documentation: move blame examples

This moves the example to specify a line range with regexps to
a later part of the manual page that has similar examples.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Thu, 9 Nov 2006 17:40:59 +0000 (09:40 -0800)]
Merge branch 'maint'

* maint:
  Nicer error messages in case saving an object to db goes wrong

18 years agogit-svn: fix dcommit losing changes when out-of-date from svn
Eric Wong [Thu, 9 Nov 2006 09:19:37 +0000 (01:19 -0800)]
git-svn: fix dcommit losing changes when out-of-date from svn

There was a bug in dcommit (and commit-diff) which caused deltas
to be generated against the latest version of the changed file
in a repository, and not the revision we are diffing (the tree)
against locally.

This bug can cause recent changes to the svn repository to be
silently clobbered by git-svn if our repository is out-of-date.

Thanks to Steven Grimm for noticing the bug.

The (few) people using the commit-diff command are now required
to use the -r/--revision argument.  dcommit usage is unchanged.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-svn: don't die on rebuild when --upgrade is specified
Eric Wong [Sun, 5 Nov 2006 05:51:11 +0000 (21:51 -0800)]
git-svn: don't die on rebuild when --upgrade is specified

--copy-remote and --upgrade are rarely (never?) used together,
so if --copy-remote is specified, that means the user really
wanted to copy the remote ref, and we should fail if that fails.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-svn: avoid printing filenames of files we're not tracking
Eric Wong [Sun, 5 Nov 2006 05:51:10 +0000 (21:51 -0800)]
git-svn: avoid printing filenames of files we're not tracking

This is purely an aesthetic change, we already skip importing of
files that don't affect the subdirectory we import.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoNicer error messages in case saving an object to db goes wrong
Petr Baudis [Thu, 9 Nov 2006 12:52:05 +0000 (13:52 +0100)]
Nicer error messages in case saving an object to db goes wrong

Currently the error e.g. when pushing to a read-only repository is quite
confusing, this attempts to clean it up, unifies error reporting between
various object writers and uses error() on couple more places.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: fix unmatched div in commitdiff
Junio C Hamano [Thu, 9 Nov 2006 10:33:35 +0000 (02:33 -0800)]
gitweb: fix unmatched div in commitdiff

When the last filepair changed only metainfo we failed to close the
extended header <div>.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: protect commit messages from controls.
Junio C Hamano [Thu, 9 Nov 2006 08:57:13 +0000 (00:57 -0800)]
gitweb: protect commit messages from controls.

The same change as the previous.  It is rather sad that commit log
message parser gives list of chomped lines while tag message parser
gives unchomped ones.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: protect blob and diff output lines from controls.
Junio C Hamano [Wed, 8 Nov 2006 23:11:10 +0000 (15:11 -0800)]
gitweb: protect blob and diff output lines from controls.

This revealed that the output from blame and tag was not chomped
properly and was relying on HTML output not noticing that extra
whitespace that resulted from the newline, which was also fixed.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-pickaxe: retire pickaxe
Junio C Hamano [Thu, 9 Nov 2006 02:47:54 +0000 (18:47 -0800)]
git-pickaxe: retire pickaxe

Just make it take over blame's place.  Documentation and command
have all stopped mentioning "git-pickaxe".  The built-in synonym
is left in the command table, so you can still say "git pickaxe",
but it probably is a good idea to retire it as well.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge git://git.kernel.org/pub/scm/gitk/gitk
Junio C Hamano [Wed, 8 Nov 2006 21:43:08 +0000 (13:43 -0800)]
Merge git://git.kernel.org/pub/scm/gitk/gitk

* git://git.kernel.org/pub/scm/gitk/gitk:
  [PATCH] gitk: Fix nextfile() and add prevfile()

18 years agogit-status: quote LF in its output
Junio C Hamano [Wed, 8 Nov 2006 21:20:46 +0000 (13:20 -0800)]
git-status: quote LF in its output

Otherwise, commit log template would get the remainder of the
filename start on a new line unquoted and the log gets messed
up.

I initially considered using the full quote_c_style(), but the
output from the command is primarily for human consumption so
chose to leave other control characters and bytes with high-bits
unmolested.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: do not give blame link unconditionally in diff-tree view
Junio C Hamano [Wed, 8 Nov 2006 20:22:04 +0000 (12:22 -0800)]
gitweb: do not give blame link unconditionally in diff-tree view

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: New improved patchset view
Jakub Narebski [Wed, 8 Nov 2006 16:59:41 +0000 (17:59 +0100)]
gitweb: New improved patchset view

Replace "gitweb diff header" with its full sha1 of blobs and replace
it by "git diff" header and extended diff header. Change also somewhat
highlighting of diffs.

Added `file_type_long' subroutine to convert file mode in octal to
file type description (only for file modes which used by git).

Changes:
* "gitweb diff header" which looked for example like below:
    file:_<sha1 before>_ -> file:_<sha1 after>_
  where 'file' is file type and '<sha1>' is full sha1 of blob is
  changed to
    diff --git _a/<file before>_ _b/<file after>_
  In both cases links are visible and use default link style. If file
  is added, a/<file> is not hyperlinked. If file is deleted, b/<file>
  is not hyperlinked.
* there is added "extended diff header", with <path> and <hash>
  hyperlinked (and <hash> shortened to 7 characters), and <mode>
  explained: '<mode>' is extended to '<mode> (<file type description>)',
  where added text is slightly lighter to easy distinguish that it
  was added (and it is difference from git-diff output).
* from-file/to-file two-line header lines have slightly darker color
  than removed/added lines.
* chunk header has now delicate line above for easier finding chunk
  boundary, and top margin of 2px, both barely visible.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Use character or octal escape codes (and add span.cntrl) in esc_path
Jakub Narebski [Wed, 8 Nov 2006 10:50:07 +0000 (11:50 +0100)]
gitweb: Use character or octal escape codes (and add span.cntrl) in esc_path

Instead of simply hiding control characters in esc_path by replacing
them with '?', use Character Escape Codes (CEC) i.e. alphabetic
backslash sequences like those found in C programming language and
many other languages influenced by it, such as Java and Perl.  If
control characted doesn't have corresponding character escape code,
use octal char sequence to escape it.

Alternatively, controls can be replaced with Unicode Control
Pictures U+2400 - U+243F (9216 - 9279), the Unicode characters
reserved for representing control characters when it is
necessary to print or display them.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Better git-unquoting and gitweb-quoting of pathnames
Jakub Narebski [Wed, 8 Nov 2006 10:48:56 +0000 (11:48 +0100)]
gitweb: Better git-unquoting and gitweb-quoting of pathnames

Extend unquote subroutine, which unquotes quoted and escaped filenames
which git may return, to deal not only with octal char sequence
quoting, but also quoting ordinary characters including '\"' and '\\'
which are respectively quoted '"' and '\', and to deal also with
C escape sequences including '\t' for TAB and '\n' for LF.

Add esc_path subroutine for gitweb quoting and HTML escaping filenames
(currently it does equivalent of ls' --hide-control-chars, which means
showing undisplayable characters (including '\n' and '\t') as '?'
(question mark) character, and use 'span' element with cntrl CSS class
to help rendering them differently.

Convert gitweb to use esc_path correctly to print pathnames.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: minimally fix "fork" support.
Junio C Hamano [Wed, 8 Nov 2006 06:37:17 +0000 (22:37 -0800)]
gitweb: minimally fix "fork" support.

A forked project is defined to be $projname/$forkname.git for
$projname.git; the code did not check this correctly and mistook
$projname/.git to be a fork of itself.  This minimally fixes the
breakage.

Also forks were not checked when index.aux file was in use.
Listing the forked ones in index.aux would show them also on the
toplevel index which may go against the hierarchical nature of
forks, but again this is a minimal fix to whip it in a better
shape suitable to be in the 'master' branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: fix disabling of "forks"
Junio C Hamano [Wed, 8 Nov 2006 06:00:45 +0000 (22:00 -0800)]
gitweb: fix disabling of "forks"

Apparently this code was never tested without "forks".  check-feature
returns a one-element list (0) when disabled, and assigning that to a
scalar variable made it to be called in a scalar context, which meant
my $check_forks = gitweb_check_feature("forks") were always 1!

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoGIT 1.4.3-rc1 v1.4.4-rc1
Junio C Hamano [Wed, 8 Nov 2006 00:36:11 +0000 (16:36 -0800)]
GIT 1.4.3-rc1

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Wed, 8 Nov 2006 00:34:30 +0000 (16:34 -0800)]
Merge branch 'maint'

* maint:
  remove an unneeded test

18 years agoMerge branch 'jc/pickaxe'
Junio C Hamano [Wed, 8 Nov 2006 00:33:59 +0000 (16:33 -0800)]
Merge branch 'jc/pickaxe'

18 years agogit-pickaxe: allow "-L <something>,+N"
Junio C Hamano [Wed, 8 Nov 2006 00:20:02 +0000 (16:20 -0800)]
git-pickaxe: allow "-L <something>,+N"

With this,

git pickaxe -L '/--progress/,+20' v1.4.0 -- pack-objects.c

gives you 20 lines starting from the first occurrence of
'--progress' in pack-objects, digging from v1.4.0 version.

You can also say

git pickaxe -L '/--progress/,-5' v1.4.0 -- pack-objects.c

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-pack-objects progress flag documentation and cleanup
Nicolas Pitre [Tue, 7 Nov 2006 15:51:23 +0000 (10:51 -0500)]
git-pack-objects progress flag documentation and cleanup

This adds documentation for --progress and --all-progress, remove a
duplicate --progress handling and make usage string more readable.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoremove an unneeded test
Tero Roponen [Tue, 7 Nov 2006 10:44:33 +0000 (12:44 +0200)]
remove an unneeded test

In wt-status.c there is a test which does nothing.
This patch removes it.

Signed-off-by: Tero Roponen <teanropo@jyu.fi>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'jc/read-tree'
Junio C Hamano [Tue, 7 Nov 2006 23:41:34 +0000 (15:41 -0800)]
Merge branch 'jc/read-tree'

* jc/read-tree:
  t6022: ignoring untracked files by merge-recursive when they do not matter
  merge-recursive: adjust to loosened "working file clobbered" check
  merge-recursive: make a few functions static.
  merge-recursive: use abbreviated commit object name.
  merge: loosen overcautious "working file will be lost" check.

18 years agoMerge branch 'np/index-pack'
Junio C Hamano [Tue, 7 Nov 2006 23:39:56 +0000 (15:39 -0800)]
Merge branch 'np/index-pack'

* np/index-pack:
  remove .keep pack lock files when done with refs update
  have index-pack create .keep file more carefully
  improve fetch-pack's handling of kept packs
  git-fetch can use both --thin and --keep with fetch-pack now
  Teach receive-pack how to keep pack files based on object count.
  Allow pack header preprocessing before unpack-objects/index-pack.
  Remove unused variable in receive-pack.
  Revert "send-pack --keep: do not explode into loose objects on the receiving end."
  missing small substitution
  Teach git-index-pack how to keep a pack file.
  Only repack active packs by skipping over kept packs.
  Allow short pack names to git-pack-objects --unpacked=.
  send-pack --keep: do not explode into loose objects on the receiving end.
  index-pack: minor fixes to comment and function name
  enhance clone and fetch -k experience
  mimic unpack-objects when --stdin is used with index-pack
  add progress status to index-pack
  make index-pack able to complete thin packs.
  enable index-pack streaming capability

18 years agoMerge branch 'maint'
Junio C Hamano [Tue, 7 Nov 2006 06:56:07 +0000 (22:56 -0800)]
Merge branch 'maint'

* maint:
  Documentation: Transplanting branch with git-rebase --onto
  merge-recursive implicitely depends on trust_executable_bit
  adjust_shared_perm: chmod() only when needed.
  Fix git-runstatus for repositories containing a file named HEAD

18 years agogit-pickaxe: -L /regexp/,/regexp/
Junio C Hamano [Tue, 7 Nov 2006 01:08:32 +0000 (17:08 -0800)]
git-pickaxe: -L /regexp/,/regexp/

With this change, you can specify the beginning and the ending
line of the range you wish to inspect with pattern matching.

For example, these are equivalent with the git.git sources:

    git pickaxe -L 7,21                       v1.4.0 -- commit.c
    git pickaxe -L '/^struct sort_node/,/^}/' v1.4.0 -- commit.c
    git pickaxe -L '7,/^}/'                   v1.4.0 -- commit.c
    git pickaxe -L '/^struct sort_node/,21'   v1.4.0 -- commit.c

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocumentation: Transplanting branch with git-rebase --onto
Jakub Narebski [Mon, 6 Nov 2006 18:12:45 +0000 (19:12 +0100)]
Documentation: Transplanting branch with git-rebase --onto

Added example of transplantig feature branch from one development
branch (for example "next") into the other development branch (for
example "master").

[jc: talking Carl's advice this contains both examples sent to
 the list by Jakub in his original message.]

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDocument git-pack-refs and link it to git(7).
Junio C Hamano [Mon, 6 Nov 2006 08:28:52 +0000 (00:28 -0800)]
Document git-pack-refs and link it to git(7).

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agomerge-recursive implicitely depends on trust_executable_bit
Alex Riesen [Mon, 6 Nov 2006 10:38:52 +0000 (11:38 +0100)]
merge-recursive implicitely depends on trust_executable_bit

Read the configuration in to get core.filemode value for this
particular repository.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoadjust_shared_perm: chmod() only when needed.
Junio C Hamano [Sat, 4 Nov 2006 20:24:05 +0000 (12:24 -0800)]
adjust_shared_perm: chmod() only when needed.

When widening permission for files and directories in a 'shared'
repository for a user with inappropriate umask() setting for
shared work, make sure we call chmod() only when we actually
need to.

The primary idea owes credit to Johannes.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoFix git-runstatus for repositories containing a file named HEAD
Jeff King [Sun, 5 Nov 2006 22:22:15 +0000 (17:22 -0500)]
Fix git-runstatus for repositories containing a file named HEAD

The wt_status_print_updated() and wt_status_print_untracked() routines
call setup_revisions() with 'HEAD' being the reference to the tip of the
current branch. However, setup_revisions() gets confused if the branch
also contains a file named 'HEAD' resulting in a fatal error.

Instead, don't pass an argv to setup_revisions() at all; simply give it no
arguments, and make 'HEAD' the default revision.

Bug noticed by Rocco Rutte <pdmef@gmx.net>.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRemove more sed invocations from within bash completion.
Shawn O. Pearce [Sun, 5 Nov 2006 11:25:25 +0000 (06:25 -0500)]
Remove more sed invocations from within bash completion.

This change removes between 1 and 4 sed invocations per completion
entered by the user.  In the case of cat-file the 4 invocations per
completion can take a while on Cygwin; running these replacements
directly within bash saves some time for the end user.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoSupport bash completion on symmetric difference operator.
Shawn O. Pearce [Sun, 5 Nov 2006 11:24:56 +0000 (06:24 -0500)]
Support bash completion on symmetric difference operator.

Now that log, whatchanged, rev-list, etc. support the symmetric
difference operator '...' we should provide bash completion for it
just like we do for '..'.

While we are at it we can remove two sed invocations during the
interactive prompt and replace them with internal bash operations.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoTake --git-dir into consideration during bash completion.
Shawn O. Pearce [Sun, 5 Nov 2006 11:21:57 +0000 (06:21 -0500)]
Take --git-dir into consideration during bash completion.

If the user has setup a command line of "git --git-dir=baz" then
anything we complete must be performed within the scope of "baz"
and not the current working directory.

This is useful with commands such as "git --git-dir=git.git log m"
to complete out "master" and view the log for the master branch of
the git.git repository.  As a nice side effect this also works for
aliases within the target repository, just as git would honor them.

Unfortunately because we still examine arguments by absolute position
in most of the more complex commands (e.g. git push) using --git-dir
with those commands will probably still cause completion to fail.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoBash completion support for remotes in .git/config.
Shawn O. Pearce [Sun, 5 Nov 2006 11:21:03 +0000 (06:21 -0500)]
Bash completion support for remotes in .git/config.

Now that Git natively supports remote specifications within the
config file such as:

[remote "origin"]
url = ...

we should provide bash completion support "out of the box" for
these remotes, just like we do for the .git/remotes directory.

Also cleaned up the __git_aliases expansion to use the same form
of querying and filtering repo-config as this saves two fork/execs
in the middle of a user prompted completion.  Finally also forced
the variable 'word' to be local within __git_aliased_command.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoOnly load .exe suffix'd completions on Cygwin.
Shawn O. Pearce [Sun, 5 Nov 2006 11:20:25 +0000 (06:20 -0500)]
Only load .exe suffix'd completions on Cygwin.

The only platform which actually needs to define .exe suffixes as
part of its completion set is Cygwin.  So don't define them on any
other platform.

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