Commit Graph

9932 Commits

Author SHA1 Message Date
Andy Parkins
dfab71cb92 Add test case for $Id$ expanded in the repository
This test case would have caught the bug fixed by revision
c23290d5.

It puts various forms of $Id$ into a file in the repository,
without allowing git to collapse them to uniformity.  Then enables the
$Id$ expansion on checkout, and checks that what is checked out has
coped with the various forms.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28 23:54:35 -07:00
Junio C Hamano
cdd5b82ee8 Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  git-svn: avoid md5 calculation entirely if SVN doesn't provide one
  Fix stupid typo in lookup_tag()
2007-05-28 23:54:26 -07:00
Eric Wong
7faf068660 git-svn: avoid md5 calculation entirely if SVN doesn't provide one
There's no point in calculating an MD5 if we're not going to use
it.  We'll also avoid the possibility of there being a bug in the
Perl MD5 library not being able to handle zero-sized files.

This is a followup to 20b3d206ac,
which allows us to track repositories that do not provide MD5
checksums.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28 23:49:47 -07:00
Junio C Hamano
c63a3ad2c1 Merge branch 'maint' of git://repo.or.cz/git-gui into maint
* 'maint' of git://repo.or.cz/git-gui:
  git-gui: Guess our share/git-gui/lib path at runtime if possible
  Correct key bindings to Control-<foo>
  git-gui: Tighten internal pattern match for lib/ directory
2007-05-28 20:23:10 -07:00
Nguyen Thai Ngoc Duy
59d10247e4 Makefile: Remove git-fsck and git-verify-pack from PROGRAMS
Those are builtins. Remove them from PROGRAMS variable

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28 20:00:45 -07:00
Johan Herland
eb09626b94 Fix stupid typo in lookup_tag()
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-28 16:51:55 -07:00
Shawn O. Pearce
ea75ee3598 git-gui: Guess our share/git-gui/lib path at runtime if possible
Johannes Sixt asked me to try to avoid embedding the runtime location
of git-gui's library directory in the executable script.  Not embedding
it helps the MinGW to be relocatable to another directory should a user
wish to install the programs in a directory other than the location the
packager wanted them to be installed into.

Most of this is a hack.  We try to determine if the path of our master
git-gui script will be able to locate the lib by ../share/git-gui/lib.
This should be true if $(gitexecdir) and $(libdir) have the same prefix.
If they do then we defer the assignment of $(libdir) until runtime, and
we get it from $argv0 rather than embedding it into the script itself.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-27 00:03:37 -04:00
Junio C Hamano
d1c7c27ea3 Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  Fix git-svn to handle svn not reporting the md5sum of a file, and test.
  More echo "$user_message" fixes.
  Add tests for the last two fixes.
  git-commit: use printf '%s\n' instead of echo on user-supplied strings
  git-am: use printf instead of echo on user-supplied strings
  Documentation: Add definition of "evil merge" to GIT Glossary
  Replace the last 'dircache's by 'index'
  Documentation: Clean up links in GIT Glossary
2007-05-26 01:30:40 -07:00
James Y Knight
20b3d206ac Fix git-svn to handle svn not reporting the md5sum of a file, and test.
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26 01:17:58 -07:00
Andy Parkins
c23290d528 Fix mishandling of $Id$ expanded in the repository copy in convert.c
If the repository contained an expanded ident keyword (i.e. $Id:XXXX$),
then the wrong bytes were discarded, and the Id keyword was not
expanded.  The fault was in convert.c:ident_to_worktree().

Previously, when a "$Id:" was found in the repository version,
ident_to_worktree() would search for the next "$" after this, and
discarded everything it found until then.  That was done with the loop:

    do {
        ch = *cp++;
        if (ch == '$')
            break;
        rem--;
    } while (rem);

The above loop left cp pointing one character _after_ the final "$"
(because of ch = *cp++).  This was different from the non-expanded case,
were cp is left pointing at the "$", and was different from the comment
which stated "discard up to but not including the closing $".  This
patch fixes that by making the loop:

    do {
        ch = *cp;
        if (ch == '$')
            break;
        cp++;
        rem--;
    } while (rem);

That is, cp is tested _then_ incremented.

This loop exits if it finds a "$" or if it runs out of bytes in the
source.  After this loop, if there was no closing "$" the expansion is
skipped, and the outer loop is allowed to continue leaving this
non-keyword as it was.  However, when the "$" is found, size is
corrected, before running the expansion:

    size -= (cp - src);

This is wrong; size is going to be corrected anyway after the expansion,
so there is no need to do it here.  This patch removes that redundant
correction.

To help find this bug, I heavily commented the routine; those comments
are included here as a bonus.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26 01:12:43 -07:00
Jeff King
a23bfaed7d More echo "$user_message" fixes.
Here are fixes to more uses of 'echo "$msg"' where $msg could contain
backslashed sequence.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26 00:33:03 -07:00
Junio C Hamano
816366e23d Add tests for the last two fixes.
This updates t4014 to check the two fixes for git-am and git-commit
we observed with "echo" that does backslash interpolation by default
without being asked with -e option.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26 00:26:20 -07:00
Junio C Hamano
293623edbc git-commit: use printf '%s\n' instead of echo on user-supplied strings
This fixes the same issue git-am had, which was fixed by Jeff
King in the previous commit.  Cleverly enough, this commit's log
message is a good test case at the same time.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-26 00:23:23 -07:00
Jeff King
4b7cc26a74 git-am: use printf instead of echo on user-supplied strings
Under some implementations of echo (such as that provided by
dash), backslash escapes are recognized without any other
options. This means that echo-ing user-supplied strings may
cause any backslash sequences in them to be converted. Using
printf resolves the ambiguity.

This bug can be seen when using git-am to apply a patch
whose subject contains the character sequence "\n"; the
characters are converted to a literal newline. Noticed by
Szekeres Istvan.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25 21:43:33 -07:00
Jakub Narebski
c1bab2889e Documentation: Add definition of "evil merge" to GIT Glossary
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25 20:54:38 -07:00
Jakub Narebski
5adf317b31 Replace the last 'dircache's by 'index'
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25 20:54:23 -07:00
Jakub Narebski
a58f3c01f7 Documentation: Clean up links in GIT Glossary
Ensure that the same link is not repeated in single glossary entry,
and that there is no self-link i.e. link to current entry.

Add links to other definitions in git glossary.

Remove inappropriate (nonsense) links, or change link to link to
correct definition (to correct term).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-25 20:54:16 -07:00
Junio C Hamano
6d9d26d826 Merge branch 'master' of git://repo.or.cz/git/fastimport into maint
* 'master' of git://repo.or.cz/git/fastimport:
  Update bash completion for git-config options
  Teach bash completion about recent log long options
  Teach bash completion about 'git remote update'
  Update bash completion header documentation
  Remove a duplicate --not option in bash completion
  Teach bash completion about git-shortlog
  Hide the plumbing diff-{files,index,tree} from bash completion
  Update bash completion to ignore some more plumbing commands
2007-05-24 21:34:59 -07:00
Junio C Hamano
76026200ee Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  fix memory leak in parse_object when check_sha1_signature fails
  name-rev: tolerate clock skew in committer dates
2007-05-24 19:01:50 -07:00
Carlos Rica
0b1f113075 fix memory leak in parse_object when check_sha1_signature fails
When check_sha1_signature fails, program is not terminated:
it prints an error message and returns NULL, so the
buffer returned by read_sha1_file should be freed before.

Signed-off-by: Carlos Rica <jasampler@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24 18:56:06 -07:00
Junio C Hamano
c075aea5da name-rev: tolerate clock skew in committer dates
In git.git repository, "git-name-rev v1.3.0~158" cannot name the
rev, while adjacent revs can be named.

This was because it gives up traversal from the tips of existing
refs as soon as it sees a commit that has older commit timestamp
than what is being named.  This is usually a good heuristics,
but v1.3.0~158 has a slightly older commit timestamp than
v1.3.0~157 (i.e. it's child), as these two were made in a
separate repostiory (in fact, in a different continent).

This adds a hardcoded slop value (1 day) to the cut-off
heuristics to work this kind of problem around.  The current
algorithm essentially runs around from the available tips down
to ancient commits and names every single rev available that are
newer than cut-off date, so a single day slop would not add that
much overhead in repositories with long enough history where the
performance of name-rev matters.

I think the algorithm could be made a bit smarter by deepening
the graph on demand as a new commit is asked to be named (this
would require rewriting of name_rev() function not to recurse
itself but use a traversal list like revision.c traverser does),
but that would be a separate issue.

Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-24 13:36:54 -07:00
Shawn O. Pearce
3d5793bf52 Correct key bindings to Control-<foo>
Alberto Bertogli reported on #git that git-gui was exiting with
alt-q, while gitk on the same system was exiting with ctrl-q.
That was not what I wanted.  I really wanted M1B to be bound to
the Control key on most non-Mac OS X platforms, but according to
Sam Vilain M1 on most systems means alt.  Since gitk always does
control, I'm doing the same thing for all non-Mac OS X systems.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 02:33:13 -04:00
Shawn O. Pearce
12977705b3 Update bash completion for git-config options
A few new configuration options grew out of the woodwork during the
1.5.2 series.  Most of these are pretty easy to support a completion
of, so we do so.

I wanted to also add completion support for the <driver> part of
merge.<driver>.name but to do that we have to look at all of the
.gitattributes files and guess what the unique set of <driver>
strings would be.  Since this appears to be non-trivial I'm punting
on it at this time.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 02:07:45 -04:00
Shawn O. Pearce
8f87fae645 Teach bash completion about recent log long options
(Somewhat) recently git-log learned about --reverse (to show commits
in the opposite order) and a looong time ago I think it learned
about --raw (to show the raw diff, rather than a unified diff).
These are both useful options, so we should make them easy for the
user to complete.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 01:51:30 -04:00
Shawn O. Pearce
fb72759b7d Teach bash completion about 'git remote update'
Recently the git-remote command grew an update subcommand, which
can be used to execute git-fetch across multiple repositories
in a single step.  These can be configured with the 'remotes.*'
configuration options, so we can offer completion for any name that
matches and appears to be useful to git-remote update.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 01:46:49 -04:00
Junio C Hamano
a21f0f0a22 Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint
* 'maint' of git://repo.or.cz/git/fastimport:
  Fix possible coredump with fast-import --import-marks
  Refactor fast-import branch creation from existing commit
  fast-import: Fix crash when referencing already existing objects
  fast-import: Fix uninitialized variable
2007-05-23 22:37:03 -07:00
Shawn O. Pearce
c70680ce7c Update bash completion header documentation
1) Added a note about supporting the long options for most commands,
    as we have been doing so for quite some time.

 2) Include a notice that these routines are covered by the GPL,
    as that may not be obvious, even though they are distributed
    as part of the core Git distribution.

 3) Added a short section on how to send patches to the routines,
    and to whom they should get sent to.  Currently that is me,
    as I am the active maintainer.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 01:36:46 -04:00
Junio C Hamano
baf5597ae4 Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  Documentation: fix git-config.xml generation
2007-05-23 22:34:11 -07:00
Shawn O. Pearce
bfbd131f52 Remove a duplicate --not option in bash completion
This was just me being silly; I put the --not option into the
completion list twice.  There's no duplicates shown in the shell
as the shell removes them before showing them to the user.  But we
really don't need the duplicates in the source script either.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 01:26:58 -04:00
Shawn O. Pearce
1fd6bec9bc Teach bash completion about git-shortlog
We've had completion for git-log for quite some time, but just
today I noticed we don't have it for the new builtin shortlog
that runs git-log internally.  This is indeed a handy thing to
have completion for, especially when your branch names are of
the Very-Very-Long-and-Hard/To-Type/Variety/That-Some-Use.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 01:25:34 -04:00
Shawn O. Pearce
5cfb4fe525 Hide the plumbing diff-{files,index,tree} from bash completion
The diff-* programs are meant to be plumbing for the diff frontend;
most end users aren't invoking these commands directly.  Consequently
we should avoid showing them as possible completions.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 01:10:15 -04:00
Shawn O. Pearce
aac65ed1bc Fix possible coredump with fast-import --import-marks
When e8438420bb allowed us to reload
the marks table on subsequent runs of fast-import we really broke
things, as we set pack_id to MAX_PACK_ID for any objects we imported
into the marks table.  Creating a branch from that mark should fail
as we attempt to read the object through a non-existant packed_git
pointer.  Instead we have to use the normal Git object system to
locate the older commit, as we ourselves do not have a reference
to the packed_git it resides in.

This bug only occurred because t9300 was not complete enough.
When we added the --import-marks feature we didn't actually test
its implementation enough to verify the function worked as intended.
I have corrected that, and included the changes as part of this fix.
Prior versions of fast-import fail the new test(s); this commit
allows them to pass.

Credit for this bug find goes to Simon Hausmann <simon@lst.de> as
he recently identified a similiar bug in the tree lazy-loading path.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 00:50:19 -04:00
Shawn O. Pearce
654aaa37ab Refactor fast-import branch creation from existing commit
To resolve a corner case uncovered by Simon Hausmann I need to
reuse the logic for the SHA-1 expression version of the 'from '
command within the mark version of the 'from ' command.  This change
doesn't alter any functionality, but is merely breaking the common
code out to a function that I can reuse.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-24 00:11:48 -04:00
Simon Hausmann
20f546a86c fast-import: Fix crash when referencing already existing objects
Commit a5c1780a03 sets the pack_id of existing
objects to MAX_PACK_ID. When the same object is referenced later again it is
found in the local object hash. With such a pack_id fast-import should not try
to locate that object in the newly created pack(s).

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-23 23:36:47 -04:00
Simon Hausmann
b259157f3c fast-import: Fix uninitialized variable
Fix uninitialized last_object->no_free variable that is accessed in
store_object.

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-23 23:36:47 -04:00
James Bowes
5fdcf75c68 Documentation: fix git-config.xml generation
Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-23 17:48:42 -07:00
Stephan Springl
7ca055f75a Use git-for-each-ref to check whether the origin branch exists.
This works in repositories that have their refs packed by
"git-pack-refs --all --prune" whereas testing the file
$git_dir/refs/heads/$opt_o does not.

Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-23 11:06:38 -07:00
Junio C Hamano
c80e07d495 Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  Document branch.autosetupmerge.
2007-05-23 00:15:35 -07:00
Paolo Bonzini
9902387d20 Document branch.autosetupmerge.
This patch documents the branch.autosetupmerge config option, added
by commit 0746d19a.

Signed-off-by: Paolo Bonzini  <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-22 22:42:42 -07:00
Shawn O. Pearce
306fc12462 git-gui: Tighten internal pattern match for lib/ directory
Our GITGUI_LIBDIR macro was testing only for @@ at the start of
the path, assuming nobody would ever find that to be a reasonable
prefix for a directory to install our library into.  That is most
likely a valid assumption, but its even more unlikely they would
have the start be @@GITGUI_ and the end be @@.  Note that we
cannot use the full string here because that would get expanded
by the sed replacement in our Makefile.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-22 03:22:51 -04:00
Junio C Hamano
523d12e500 git-cvsserver: fix disabling service via per-method config
When the per-method enable logic disables the access, we should
not even look at the global one.

 git-cvsserver.perl |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-21 18:42:57 -07:00
Junio C Hamano
f95c6780c2 Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  git-status: respect core.excludesFile
  SubmittingPatches: mention older C compiler compatibility
  git-daemon: don't ignore pid-file write failure
2007-05-21 18:42:35 -07:00
Johannes Schindelin
0ba956d331 git-status: respect core.excludesFile
git-add reads this variable, and honours the contents of that file if that
exists. Match this behaviour in git-status, too.

Noticed by Evan Carroll on IRC.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-21 18:36:02 -07:00
Johannes Schindelin
243bfd3399 SubmittingPatches: mention older C compiler compatibility
We do not appreciate C99 initializers, declarations after statements,
or "0" instead of "NULL".

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-21 18:35:37 -07:00
Jim Meyering
bc4e7d0358 git-daemon: don't ignore pid-file write failure
Note: since the consequence of failure is to call die,
I don't bother to close "f".

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-21 18:34:14 -07:00
Jonas Fonseca
56d99c67d1 Update bash completion to ignore some more plumbing commands
[sp: Modified Jonas' original patch to keep checkout-index
 as a a valid completion.]

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-05-21 02:09:26 -04:00
Junio C Hamano
7df6ddf51e Merge branch 'maint-1.5.1' into maint
* maint-1.5.1:
  annotate: make it work from subdirectories.
  git-config: Correct asciidoc documentation for --int/--bool
  t1300: Add tests for git-config --bool --get
  unpack-trees.c: verify_uptodate: remove dead code
  Use PATH_MAX instead of TEMPFILE_PATH_LEN
  branch: fix segfault when resolving an invalid HEAD
2007-05-20 19:57:00 -07:00
Junio C Hamano
5b6dedd6a0 annotate: make it work from subdirectories.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-20 19:56:28 -07:00
Frank Lichtenheld
0cb21911f4 git-config: Correct asciidoc documentation for --int/--bool
The asciidoc documentation seemed to indicate that type specifiers
are honoured on writing operations which they aren't. Make this
more clear.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-20 16:00:23 -07:00
Frank Lichtenheld
cab333cb6a t1300: Add tests for git-config --bool --get
Noticed that there were only tests for --int, but not
for --bool. Add some.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-05-20 16:00:22 -07:00