git
15 years agogit-mergetool: properly handle "git mergetool -- filename"
David Aguilar [Sat, 20 Dec 2008 01:01:01 +0000 (17:01 -0800)] 
git-mergetool: properly handle "git mergetool -- filename"

Like many git commands, git-mergetool allows "--" to signal
the end of option processing.  This adds a missing "shift"
statement so that this is correctly handled.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-send-email: handle email address with quoted comma
Wu Fengguang [Fri, 19 Dec 2008 08:10:10 +0000 (16:10 +0800)] 
git-send-email: handle email address with quoted comma

Correctly handle email addresses containing quoted commas, e.g.

    "Zhu, Yi" <yi.zhu@intel.com>, "Li, Shaohua" <shaohua.li@intel.com>

The commas inside the double quotes are not separators.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: fix typos, grammar, asciidoc syntax
Markus Heidelberg [Fri, 19 Dec 2008 12:14:18 +0000 (13:14 +0100)] 
Documentation: fix typos, grammar, asciidoc syntax

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofast-import: close pack before unlinking it
Johannes Schindelin [Mon, 15 Dec 2008 21:11:40 +0000 (22:11 +0100)] 
fast-import: close pack before unlinking it

This is sort of a companion patch to 4723ee9(Close files opened by
lock_file() before unlinking.): on Windows, you cannot delete what
is still open.

This makes test 9300-fast-import pass on Windows for me; quite a few
fast-imports leave temporary packs until the test "blank lines not
necessary after other commands" actually tests for the number of files
in .git/objects/pack/, which has a few temporary packs now.

I guess that 8b4eb6b(Do not perform cross-directory renames when
creating packs) was "responsible" for the breakage.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agopager: do not dup2 stderr if it is already redirected
Junio C Hamano [Mon, 15 Dec 2008 08:33:34 +0000 (00:33 -0800)] 
pager: do not dup2 stderr if it is already redirected

An earlier commit 61b8050 (sending errors to stdout under $PAGER,
2008-02-16) avoided losing the error messages that are sent to the
standard error when $PAGER is in effect by dup2'ing fd 2 to the pager.
his way, showing a tag object that points to a bad object:

    $ git show tag-foo

would give the error message to the pager.  However, it was not quite
right if the user did:

    $ git show 2>error.log tag-foo

i.e. use the pager but store the errors in a separate file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-show: do not segfault when showing a bad tag
Junio C Hamano [Mon, 15 Dec 2008 08:36:56 +0000 (00:36 -0800)] 
git-show: do not segfault when showing a bad tag

When a tag points at a bad or nonexistent object, we should diagnose the
breakage and exit.  An earlier commit 4f3dcc2 (Fix 'git show' on signed
tag of signed tag of commit, 2008-07-01) lost this check and made it
segfault instead; not good.

This fixes it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-config.txt: fix a typo
Jim Meyering [Fri, 12 Dec 2008 09:00:41 +0000 (10:00 +0100)] 
git-config.txt: fix a typo

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofsck: reduce stack footprint
Linus Torvalds [Thu, 11 Dec 2008 03:44:37 +0000 (19:44 -0800)] 
fsck: reduce stack footprint

The logic to mark all objects that are reachable from tips of refs were
implemented as a set of recursive functions.  In a repository with a deep
enough history, this can easily eat up all the available stack space.

Restructure the code to require less stackspace by using an object array
to keep track of the objects that still need to be processed.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomake sure packs to be replaced are closed beforehand
Nicolas Pitre [Tue, 9 Dec 2008 19:26:52 +0000 (14:26 -0500)] 
make sure packs to be replaced are closed beforehand

Especially on Windows where an opened file cannot be replaced, make
sure pack-objects always close packs it is about to replace. Even on
non Windows systems, this could save potential bad results if ever
objects were to be read from the new pack file using offset from the old
index.

This should fix t5303 on Windows.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Tested-by: Johannes Sixt <j6t@kdbg.org> (MinGW)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agowork around Python warnings from AsciiDoc
Junio C Hamano [Mon, 8 Dec 2008 02:38:46 +0000 (18:38 -0800)] 
work around Python warnings from AsciiDoc

It appears that a reference to an anchor defined as [[anchor-name]] from
another place using <<anchor-name>> syntax, when the anchor name contains
a string "-with-" in its name, triggers these warnings from Python
interpreter.

  asciidoc -b docbook -d book user-manual.txt
  <string>:1: Warning: 'with' will become a reserved keyword in Python 2.6
  <string>:1: Warning: 'with' will become a reserved keyword in Python 2.6
  <string>:1: Warning: 'with' will become a reserved keyword in Python 2.6
  <string>:1: Warning: 'with' will become a reserved keyword in Python 2.6

There currently is no reference to "Finding comments with given content",
but for consistency and for futureproofing, the anchor is also updated as
the other ones that are actually used and trigger these warnings.

Signed-off-by: Junio C Hamano <junio@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-svn: Make following parents atomic
Deskin Miller [Mon, 8 Dec 2008 13:31:31 +0000 (08:31 -0500)] 
git-svn: Make following parents atomic

find_parent_branch generates branch@rev type branches when one has to
look back through SVN history to properly get the history for a branch
copied from somewhere not already being tracked by git-svn.  If in the
process of fetching this history, git-svn is interrupted, then when one
fetches again, it will use whatever was last fetched as the parent
commit and fail to fetch any more history which it didn't get to before
being terminated.  This is especially troubling in that different
git-svn copies of the same SVN repository can end up with different
commit sha1s, incorrectly showing the history as divergent and
precluding easy collaboration using git push and fetch.

To fix this, when we initialise the Git::SVN object $gs to search for
and perhaps fetch history, we check if there are any commits in SVN in
the range between the current revision $gs is at, and the top revision
for which we were asked to fill history.  If there are commits we're
missing in that range, we continue the fetch from the current revision
to the top, properly getting all history before using it as the parent
for the branch we're trying to create.

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoGIT 1.6.0.5 v1.6.0.5
Junio C Hamano [Sun, 7 Dec 2008 11:03:16 +0000 (03:03 -0800)] 
GIT 1.6.0.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years ago"git diff <tree>{3,}": do not reverse order of arguments
Matt McCutchen [Sat, 11 Oct 2008 01:56:15 +0000 (21:56 -0400)] 
"git diff <tree>{3,}": do not reverse order of arguments

According to the message of commit 0fe7c1de16f71312e6adac4b85bddf0d62a47168,
"git diff" with three or more trees expects the merged tree first followed by
the parents, in order.  However, this command reversed the order of its
arguments, resulting in confusing diffs.  A comment /* Again, the revs are all
reverse */ suggested there was a reason for this, but I can't figure out the
reason, so I removed the reversal of the arguments.  Test case included.

Signed-off-by: Matt McCutchen <matt@mattmccutchen.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agotag: delete TAG_EDITMSG only on successful tag
Jeff King [Sat, 6 Dec 2008 19:40:34 +0000 (14:40 -0500)] 
tag: delete TAG_EDITMSG only on successful tag

The user may put some effort into writing an annotated tag
message. When the tagging process later fails (which can
happen fairly easily, since it may be dependent on gpg being
correctly configured and used), there is no record left on
disk of the tag message.

Instead, let's keep the TAG_EDITMSG file around until we are
sure the tag has been created successfully. If we die
because of an error, the user can recover their text from
that file. Leaving the file in place causes no conflicts;
it will be silently overwritten by the next annotated tag
creation.

This matches the behavior of COMMIT_EDITMSG, which stays
around in case of error.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: Make project specific override for 'grep' feature work
Jakub Narebski [Sun, 7 Dec 2008 09:36:36 +0000 (10:36 +0100)] 
gitweb: Make project specific override for 'grep' feature work

The 'grep' feature was marked in the comments as having project
specific config, but it lacked 'sub' key required for it to work.

Kind-of-Noticed-by: Matt Kraai <kraai@ftbfs.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agohttp.c: use 'git_config_string' to get 'curl_http_proxy'
Miklos Vajna [Sun, 7 Dec 2008 00:45:37 +0000 (01:45 +0100)] 
http.c: use 'git_config_string' to get 'curl_http_proxy'

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofetch-pack: Avoid memcpy() with src==dst
Thomas Rast [Sat, 6 Dec 2008 20:50:09 +0000 (21:50 +0100)] 
fetch-pack: Avoid memcpy() with src==dst

memcpy() may only be used for disjoint memory areas, but when invoked
from cmd_fetch_pack(), we have my_args == &args.  (The argument cannot
be removed entirely because transport.c invokes with its own
variable.)

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'jk/maint-commit-v-strip' into maint
Junio C Hamano [Wed, 3 Dec 2008 07:47:25 +0000 (23:47 -0800)] 
Merge branch 'jk/maint-commit-v-strip' into maint

* jk/maint-commit-v-strip:
  commit: Fix stripping of patch in verbose mode.

15 years agoxdiff: give up scanning similar lines early
Davide Libenzi [Sat, 8 Nov 2008 05:24:33 +0000 (21:24 -0800)] 
xdiff: give up scanning similar lines early

In a corner case of large files whose lines do not match uniquely, the
loop to eliminate a line that matches multiple locations adjacent to a run
of lines that do not uniquely match wasted too much cycles.  Fix this by
giving up early after scanning 100 lines in both direction.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'bc/maint-keep-pack' into maint
Junio C Hamano [Wed, 3 Dec 2008 07:00:04 +0000 (23:00 -0800)] 
Merge branch 'bc/maint-keep-pack' into maint

* bc/maint-keep-pack:
  repack: only unpack-unreachable if we are deleting redundant packs
  t7700: test that 'repack -a' packs alternate packed objects
  pack-objects: extend --local to mean ignore non-local loose objects too
  sha1_file.c: split has_loose_object() into local and non-local counterparts
  t7700: demonstrate mishandling of loose objects in an alternate ODB
  builtin-gc.c: use new pack_keep bitfield to detect .keep file existence
  repack: do not fall back to incremental repacking with [-a|-A]
  repack: don't repack local objects in packs with .keep file
  pack-objects: new option --honor-pack-keep
  packed_git: convert pack_local flag into a bitfield and add pack_keep
  t7700: demonstrate mishandling of objects in packs with a .keep file

15 years agoMerge branch 'js/mingw-rename-fix' into maint
Junio C Hamano [Wed, 3 Dec 2008 06:38:07 +0000 (22:38 -0800)] 
Merge branch 'js/mingw-rename-fix' into maint

* js/mingw-rename-fix:
  compat/mingw.c: Teach mingw_rename() to replace read-only files

15 years agoUser's Manual: remove duplicated url at the end of Appendix B
Miklos Vajna [Mon, 1 Dec 2008 18:50:02 +0000 (19:50 +0100)] 
User's Manual: remove duplicated url at the end of Appendix B

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoUpdate draft release notes to 1.6.0.5
Junio C Hamano [Mon, 1 Dec 2008 02:33:20 +0000 (18:33 -0800)] 
Update draft release notes to 1.6.0.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'st/maint-tag' into maint
Junio C Hamano [Mon, 1 Dec 2008 02:18:50 +0000 (18:18 -0800)] 
Merge branch 'st/maint-tag' into maint

* st/maint-tag:
  tag: Add more tests about mixing incompatible modes and options
  tag: Check that options are only allowed in the appropriate mode

15 years agoMerge branch 'mk/maint-cg-push' into maint
Junio C Hamano [Mon, 1 Dec 2008 02:18:11 +0000 (18:18 -0800)] 
Merge branch 'mk/maint-cg-push' into maint

* mk/maint-cg-push:
  git push: Interpret $GIT_DIR/branches in a Cogito compatible way

15 years agogenerate-cmdlist.sh: avoid selecting synopsis at wrong place
Nguyễn Thái Ngọc Duy [Sun, 30 Nov 2008 10:54:31 +0000 (17:54 +0700)] 
generate-cmdlist.sh: avoid selecting synopsis at wrong place

In "common" man pages there is luckily no "NAME" anywhere except at
beginning of documents. If there is another "NAME", sed could
mis-select it and lead to common-cmds.h corruption. So better nail it
at beginning of line, which would reduce corruption chance.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'mv/fast-export' into maint
Junio C Hamano [Fri, 28 Nov 2008 03:23:27 +0000 (19:23 -0800)] 
Merge branch 'mv/fast-export' into maint

* mv/fast-export:
  fast-export: use an unsorted string list for extra_refs
  Add new testcase to show fast-export does not always exports all tags

15 years agosha1_file.c: resolve confusion EACCES vs EPERM
Sam Vilain [Fri, 14 Nov 2008 07:19:34 +0000 (20:19 +1300)] 
sha1_file.c: resolve confusion EACCES vs EPERM

An earlier commit 916d081 (Nicer error messages in case saving an object
to db goes wrong, 2006-11-09) confused EACCES with EPERM, the latter of
which is an unlikely error from mkstemp().

Signed-off-by: Sam Vilain <sam@vilain.net>
15 years agosha1_file: avoid bogus "file exists" error message
Joey Hess [Thu, 20 Nov 2008 18:56:28 +0000 (13:56 -0500)] 
sha1_file: avoid bogus "file exists" error message

This avoids the following misleading error message:

error: unable to create temporary sha1 filename ./objects/15: File exists

mkstemp can fail for many reasons, one of which, ENOENT, can occur if
the directory for the temp file doesn't exist. create_tmpfile tried to
handle this case by always trying to mkdir the directory, even if it
already existed. This caused errno to be clobbered, so one cannot tell
why mkstemp really failed, and it truncated the buffer to just the
directory name, resulting in the strange error message shown above.

Note that in both occasions that I've seen this failure, it has not been
due to a missing directory, or bad permissions, but some other, unknown
mkstemp failure mode that did not occur when I ran git again. This code
could perhaps be made more robust by retrying mkstemp, in case it was a
transient failure.

Signed-off-by: Joey Hess <joey@kitenet.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit checkout: don't warn about unborn branch if -f is already passed
Matt McCutchen [Mon, 24 Nov 2008 06:55:22 +0000 (01:55 -0500)] 
git checkout: don't warn about unborn branch if -f is already passed

I think it's unnecessary to warn that the checkout has been forced due to an
unborn current branch if -f has been explicitly passed.  For one project, I am
using git-new-workdir to create workdirs from a bare repository whose HEAD is
set to an unborn branch, and this warning started to irritate me.

Signed-off-by: Matt McCutchen <matt@mattmccutchen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobash: offer refs instead of filenames for 'git revert'
SZEDER Gábor [Thu, 27 Nov 2008 13:35:53 +0000 (14:35 +0100)] 
bash: offer refs instead of filenames for 'git revert'

The completion script for 'git revert' currently offers options and
filenames.  However, 'git revert' doesn't take any filenames from the
command line, but a single commit.  Therefore, it's more sane to offer
refs instead.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobash: remove dashed command leftovers
SZEDER Gábor [Thu, 27 Nov 2008 13:35:38 +0000 (14:35 +0100)] 
bash: remove dashed command leftovers

Commit 5a625b07 (bash: remove fetch, push, pull dashed form leftovers,
2008-10-03) did that already, but there were still some git-cmd left
here and there.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'pw/maint-p4' into maint
Junio C Hamano [Thu, 27 Nov 2008 21:18:25 +0000 (13:18 -0800)] 
Merge branch 'pw/maint-p4' into maint

* pw/maint-p4:
  git-p4: fix keyword-expansion regex

15 years agogit-p4: fix keyword-expansion regex
Pete Wyckoff [Wed, 26 Nov 2008 18:52:15 +0000 (13:52 -0500)] 
git-p4: fix keyword-expansion regex

This text:

     my $dir = $File::Find::dir;
     return if ($dir !~ m,$options->{dirpat}$,);

was improperly converted to:

     my $dir = $File$dir !~ m,$options->{dirpat}$,);

by the keyword identifier expansion code.  Add a \n
to make sure the regex doesn't go across end-of-line
boundaries.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Acked-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix typos in the documentation.
Ralf Wildenhues [Thu, 27 Nov 2008 07:32:01 +0000 (08:32 +0100)] 
Fix typos in the documentation.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'mm/maint-sort-config-doc' into maint
Junio C Hamano [Wed, 26 Nov 2008 19:57:15 +0000 (11:57 -0800)] 
Merge branch 'mm/maint-sort-config-doc' into maint

* mm/maint-sort-config-doc:
  config.txt: alphabetize configuration sections

15 years agoconfig.txt: alphabetize configuration sections
Matt McCutchen [Wed, 26 Nov 2008 08:26:50 +0000 (03:26 -0500)] 
config.txt: alphabetize configuration sections

I figured the sections might as well be in some order, so I chose alphabetical
but with "core" at the beginning.  This should help people add new variables
in the right places.

Signed-off-by: Matt McCutchen <matt@mattmccutchen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoTeach "git diff" to honour --[no-]ext-diff
Junio C Hamano [Wed, 26 Nov 2008 17:58:41 +0000 (09:58 -0800)] 
Teach "git diff" to honour --[no-]ext-diff

The original intention of 72909be (Add diff-option --ext-diff, 2007-06-30)
was to optionally allow the use of external diff viewer in "git log"
family (while keeping them disabled by default).  It exposed the "allow
external diff" bit to the UI, but forgot to adjust the "git diff" codepath
that was set up to always allow use of the external diff viewer.

Noticed by Nazri Ramliy; tests by René Scharfe squashed in.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofast-export: use an unsorted string list for extra_refs
Johannes Schindelin [Sun, 23 Nov 2008 11:55:54 +0000 (12:55 +0100)] 
fast-export: use an unsorted string list for extra_refs

The list extra_refs contains tags and the objects referenced by them,
so that they can be handled at the end.  When a tag references a
commit, that commit is added to the list using the same name.

Also, the function handle_tags_and_duplicates() relies on the order
the items were added to extra_refs, so clearly we do not want to
use a sorted list here.

Noticed by Miklos Vajna.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Tested-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd new testcase to show fast-export does not always exports all tags
Miklos Vajna [Sat, 22 Nov 2008 18:22:48 +0000 (19:22 +0100)] 
Add new testcase to show fast-export does not always exports all tags

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix misleading wording for git-cherry-pick
Bryan Drewery [Thu, 20 Nov 2008 05:11:42 +0000 (23:11 -0600)] 
Fix misleading wording for git-cherry-pick

Documentation for -n implies that -x is normally
used, however this is no longer true.

Signed-off-by: Bryan Drewery <bryan@shatow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocompat/mingw.c: Teach mingw_rename() to replace read-only files
Johannes Sixt [Wed, 19 Nov 2008 16:25:27 +0000 (17:25 +0100)] 
compat/mingw.c: Teach mingw_rename() to replace read-only files

On POSIX, rename() can replace files that are not writable. On Windows,
however, read-only files cannot be replaced without additional efforts:
We have to make the destination writable first.

Since the situations where the destination is read-only are rare, we do not
make the destination writable on every invocation, but only if the first
try to rename a file failed with an "access denied" error.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorequest-pull: make usage string match manpage
Stefan Naewe [Mon, 17 Nov 2008 08:57:19 +0000 (09:57 +0100)] 
request-pull: make usage string match manpage

The usage string of 'git request-pull' differs from he manpage
which gives the correct 'synopsis'.

Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoTeach ls-files --with-tree=<tree> to work with options other than -c
Junio C Hamano [Sun, 16 Nov 2008 08:10:25 +0000 (00:10 -0800)] 
Teach ls-files --with-tree=<tree> to work with options other than -c

Originally --with-tree=<tree> was designed for the sole purpose of
checking if a given pathspec makes sense as a parameter to git-commit
using it in conjunction with --error-unmatch.  It had logic to avoid
showing the same entry (one came from the original index, another from the
overlayed tree) twice so that it works with -c (i.e. "show-cached"), but
otherwise it was not designed to work with the flags such as -m, -d, etc.

This teaches the same logic to cover the codepath for -m and -d.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobuiltin-ls-files.c: coding style fix.
Junio C Hamano [Sun, 16 Nov 2008 08:15:43 +0000 (00:15 -0800)] 
builtin-ls-files.c: coding style fix.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: git-svn: fix example for centralized SVN clone
Jan Krüger [Fri, 14 Nov 2008 17:45:14 +0000 (18:45 +0100)] 
Documentation: git-svn: fix example for centralized SVN clone

The example that tells users how to centralize the effort of the initial
git svn clone operation doesn't work properly. It uses rebase but that
only works if HEAD exists. This adds one extra command to create a
somewhat sensible HEAD that should work in all cases.

Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: fix links to "everyday.html"
Christian Couder [Fri, 14 Nov 2008 12:26:47 +0000 (13:26 +0100)] 
Documentation: fix links to "everyday.html"

In some places the links are wrong. They should be:
"link:everyday.html", instead of: "linkgit:everyday[7]".
This patch fixes that.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorevision.c: use proper data type in call to sizeof() within xrealloc
Brandon Casey [Thu, 13 Nov 2008 20:20:37 +0000 (14:20 -0600)] 
revision.c: use proper data type in call to sizeof() within xrealloc

A type char** was being used instead of char*.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorepack: only unpack-unreachable if we are deleting redundant packs
Brandon Casey [Thu, 13 Nov 2008 20:11:46 +0000 (14:11 -0600)] 
repack: only unpack-unreachable if we are deleting redundant packs

The -A option calls pack-objects with the --unpack-unreachable option so
that the unreachable objects in local packs are left in the local object
store loose. But if the -d option to repack was _not_ used, then these
unpacked loose objects are redundant and unnecessary.

Update tests in t7701.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodate/time: do not get confused by fractional seconds
Linus Torvalds [Sun, 17 Aug 2008 04:25:40 +0000 (21:25 -0700)] 
date/time: do not get confused by fractional seconds

The date/time parsing code was confused if the input time HH:MM:SS is
followed by fractional seconds.  Since we do not record anything finer
grained than seconds, we could just drop fractional part, but there is a
twist.

We have taught people that not just spaces but dot can be used as word
separators when spelling things like:

    $ git log --since 2.days
    $ git show @{12:34:56.7.days.ago}

and we shouldn't mistake "7" in the latter example as a fraction and
discard it.

The rules are:

 - valid days of month/mday are always single or double digits.

 - valid years are either two or four digits

   No, we don't support the year 600 _anyway_, since our encoding is based
   on the UNIX epoch, and the day we worry about the year 10,000 is far
   away and we can raise the limit to five digits when we get closer.

 - Other numbers (eg "600 days ago") can have any number of digits, but
   they cannot start with a zero. Again, the only exception is for
   two-digit numbers, since that is fairly common for dates ("Dec 01" is
   not unheard of)

So that means that any milli- or micro-second would be thrown out just
because the number of digits shows that it cannot be an interesting date.

A milli- or micro-second can obviously be a perfectly fine number
according to the rules above, as long as it doesn't start with a '0'. So
if we have

12:34:56.123

then that '123' gets parsed as a number, and we remember it. But because
it's bigger than 31, we'll never use it as such _unless_ there is
something after it to trigger that use.

So you can say "12:34:56.123.days.ago", and because of the "days", that
123 will actually be meaninful now.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7700: test that 'repack -a' packs alternate packed objects
Brandon Casey [Thu, 13 Nov 2008 00:50:26 +0000 (18:50 -0600)] 
t7700: test that 'repack -a' packs alternate packed objects

Previously, when 'repack -a' was called and there were no packs in the local
repository without a .keep file, the repack would fall back to calling
pack-objects with '--unpacked --incremental'. This resulted in the created
pack file, if any, to be missing the packed objects in the alternate object
store. Test that this specific case has been fixed.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoStart 1.6.0.5 cycle
Junio C Hamano [Wed, 12 Nov 2008 23:03:03 +0000 (15:03 -0800)] 
Start 1.6.0.5 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix pack.packSizeLimit and --max-pack-size handling
Nicolas Pitre [Wed, 12 Nov 2008 18:23:58 +0000 (13:23 -0500)] 
Fix pack.packSizeLimit and --max-pack-size handling

If the limit was sufficiently low, having a single object written
could bust the limit (by design), but caused the remaining allowed
size to go negative for subsequent objects, which for an unsigned
variable is a rather huge limit.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocheckout: Fix "initial checkout" detection
Junio C Hamano [Wed, 12 Nov 2008 19:52:35 +0000 (11:52 -0800)] 
checkout: Fix "initial checkout" detection

Earlier commit 5521883 (checkout: do not lose staged removal, 2008-09-07)
tightened the rule to prevent switching branches from losing local
changes, so that staged removal of paths can be protected, while
attempting to keep a loophole to still allow a special case of switching
out of an un-checked-out state.

However, the loophole was made a bit too tight, and did not allow
switching from one branch (in an un-checked-out state) to check out
another branch.

The change to builtin-checkout.c in this commit loosens it to allow this,
by not insisting the original commit and the new commit to be the same.

It also introduces a new function, is_index_unborn (and an associated
macro, is_cache_unborn), to check if the repository is truly in an
un-checked-out state more reliably, by making sure that $GIT_INDEX_FILE
did not exist when populating the in-core index structure.  A few places
the earlier commit 5521883 added the check for the initial checkout
condition are updated to use this function.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocommit: Fix stripping of patch in verbose mode.
Jeff King [Wed, 12 Nov 2008 08:25:52 +0000 (03:25 -0500)] 
commit: Fix stripping of patch in verbose mode.

When the "-v" option is given, we put diff of what is to be committed into
the commit template, and then strip it back out again after the user has
edited it.

We used to look for the diff by searching for the "diff --git a/"
header. With diff.mnemonicprefix set in the configuration, however, this
pattern does not match.  The pattern is loosened to cover this case.

Also, if the user puts their own diff in the message (e.g., as a sample
output), then we will accidentally trigger the pattern, removing part of
their output.

We can avoid doing this stripping altogether if the user didn't use "-v"
in the first place, so we know that any match we find will be a false
positive.

[jc: this fix was split out of a series originally meant for master.]

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRemove the period after the git-check-attr summary
Matt Kraai [Fri, 7 Nov 2008 12:26:55 +0000 (04:26 -0800)] 
Remove the period after the git-check-attr summary

The period at the end of the git-check-attr summary causes there to be
two periods after the summary in the git(1) manual page.

Signed-off-by: Matt Kraai <kraai@ftbfs.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agopack-objects: extend --local to mean ignore non-local loose objects too
Brandon Casey [Mon, 10 Nov 2008 05:59:58 +0000 (23:59 -0600)] 
pack-objects: extend --local to mean ignore non-local loose objects too

With this patch, --local means pack only local objects that are not already
packed.

Additionally, this fixes t7700 testing whether loose objects in an alternate
object database are repacked.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agosha1_file.c: split has_loose_object() into local and non-local counterparts
Brandon Casey [Mon, 10 Nov 2008 05:59:57 +0000 (23:59 -0600)] 
sha1_file.c: split has_loose_object() into local and non-local counterparts

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7700: demonstrate mishandling of loose objects in an alternate ODB
Brandon Casey [Mon, 10 Nov 2008 05:59:56 +0000 (23:59 -0600)] 
t7700: demonstrate mishandling of loose objects in an alternate ODB

Loose objects residing in an alternate object database should not be packed
when the -l option to repack is used.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobuiltin-gc.c: use new pack_keep bitfield to detect .keep file existence
Brandon Casey [Wed, 12 Nov 2008 17:59:07 +0000 (11:59 -0600)] 
builtin-gc.c: use new pack_keep bitfield to detect .keep file existence

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorepack: do not fall back to incremental repacking with [-a|-A]
Brandon Casey [Wed, 12 Nov 2008 17:59:06 +0000 (11:59 -0600)] 
repack: do not fall back to incremental repacking with [-a|-A]

When repack is called with either the -a or -A option, the user has
requested to repack all objects including those referenced by the
alternates mechanism. Currently, if there are no local packs without
.keep files, then repack will call pack-objects with the
'--unpacked --incremental' options which causes it to exclude alternate
packed objects. So, remove this fallback.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorepack: don't repack local objects in packs with .keep file
Brandon Casey [Wed, 12 Nov 2008 17:59:05 +0000 (11:59 -0600)] 
repack: don't repack local objects in packs with .keep file

If the user created a .keep file for a local pack, then it can be inferred
that the user does not want those objects repacked.

This fixes the repack bug tested by t7700.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agopack-objects: new option --honor-pack-keep
Brandon Casey [Wed, 12 Nov 2008 17:59:04 +0000 (11:59 -0600)] 
pack-objects: new option --honor-pack-keep

This adds a new option to pack-objects which will cause it to ignore an
object which appears in a local pack which has a .keep file, even if it
was specified for packing.

This option will be used by the porcelain repack.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agopacked_git: convert pack_local flag into a bitfield and add pack_keep
Brandon Casey [Wed, 12 Nov 2008 17:59:03 +0000 (11:59 -0600)] 
packed_git: convert pack_local flag into a bitfield and add pack_keep

pack_keep will be set when a pack file has an associated .keep file.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7700: demonstrate mishandling of objects in packs with a .keep file
Brandon Casey [Wed, 12 Nov 2008 17:59:02 +0000 (11:59 -0600)] 
t7700: demonstrate mishandling of objects in packs with a .keep file

Objects residing in pack files that have an associated .keep file are not
supposed to be repacked into new pack files, but they are.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit push: Interpret $GIT_DIR/branches in a Cogito compatible way
Martin Koegler [Mon, 10 Nov 2008 21:47:11 +0000 (22:47 +0100)] 
git push: Interpret $GIT_DIR/branches in a Cogito compatible way

Current git versions ignore everything after # (called <head> in the
following) when pushing. Older versions (before cf818348f1ab57),
interpret #<head> as part of the URL, which make git bail out.

As branches origin from Cogito, it is the best to correct this by using
the behaviour of cg-push, that is to push HEAD to remote refs/heads/<head>.

Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix non-literal format in printf-style calls
Daniel Lowe [Mon, 10 Nov 2008 21:07:52 +0000 (16:07 -0500)] 
Fix non-literal format in printf-style calls

These were found using gcc 4.3.2-1ubuntu11 with the warning:

    warning: format not a string literal and no format arguments

Incorporated suggestions from Brandon Casey <casey@nrlssc.navy.mil>.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-submodule: Avoid printing a spurious message.
Alexandre Julliard [Tue, 11 Nov 2008 21:09:16 +0000 (22:09 +0100)] 
git-submodule: Avoid printing a spurious message.

Fix 'git submodule update' to avoid printing a spurious "Maybe you want
to use 'update --init'?" once for every uninitialized submodule it
encounters.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit ls-remote: make usage string match manpage
Stefan Naewe [Tue, 11 Nov 2008 15:52:31 +0000 (16:52 +0100)] 
git ls-remote: make usage string match manpage

The usage string of 'git ls-remote' is pretty terse. The manpage
however gives the correct 'synopsis'.

Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMakefile: help people who run 'make check' by mistake
Junio C Hamano [Tue, 11 Nov 2008 21:12:17 +0000 (13:12 -0800)] 
Makefile: help people who run 'make check' by mistake

The target to run self test is 'make test', but there are people who try
'make check' and worse yet do not have sparse installed.

Suggest 'make test' target when they do not have 'sparse'.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: bisect: change a few instances of "git-cmd" to "git cmd"
Christian Couder [Sun, 9 Nov 2008 13:53:14 +0000 (14:53 +0100)] 
Documentation: bisect: change a few instances of "git-cmd" to "git cmd"

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: rev-list: change a few instances of "git-cmd" to "git cmd"
Christian Couder [Sun, 9 Nov 2008 13:46:35 +0000 (14:46 +0100)] 
Documentation: rev-list: change a few instances of "git-cmd" to "git cmd"

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocheckout: Don't crash when switching away from an invalid branch.
Alexandre Julliard [Sat, 8 Nov 2008 12:03:59 +0000 (13:03 +0100)] 
checkout: Don't crash when switching away from an invalid branch.

When using alternates, it is possible for HEAD to end up pointing to
an invalid commit. git checkout should be able to recover from that
situation without crashing.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGIT 1.6.0.4 v1.6.0.4
Junio C Hamano [Sun, 9 Nov 2008 01:33:50 +0000 (17:33 -0800)] 
GIT 1.6.0.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUpdate RPM spec for the new location of git-cvsserver.
Quy Tonthat [Fri, 12 Sep 2008 16:22:44 +0000 (02:22 +1000)] 
Update RPM spec for the new location of git-cvsserver.

git-cvsserver has been moved from libexecdir to bindir.

Signed-off-by: Quy Tonthat <qtonthat@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'cb/maint-update-ref-fix' into maint
Junio C Hamano [Sun, 9 Nov 2008 01:32:49 +0000 (17:32 -0800)] 
Merge branch 'cb/maint-update-ref-fix' into maint

* cb/maint-update-ref-fix:
  push: fix local refs update if already up-to-date
  do not force write of packed refs

16 years agoMerge branch 'cj/maint-gitpm-fix-maybe-self' into maint
Junio C Hamano [Sun, 9 Nov 2008 00:50:25 +0000 (16:50 -0800)] 
Merge branch 'cj/maint-gitpm-fix-maybe-self' into maint

* cj/maint-gitpm-fix-maybe-self:
  Git.pm: do not break inheritance

16 years agoMerge branch 'ar/maint-mksnpath' into maint
Junio C Hamano [Sun, 9 Nov 2008 00:13:19 +0000 (16:13 -0800)] 
Merge branch 'ar/maint-mksnpath' into maint

* ar/maint-mksnpath:
  Use git_pathdup instead of xstrdup(git_path(...))
  git_pathdup: returns xstrdup-ed copy of the formatted path
  Fix potentially dangerous use of git_path in ref.c
  Add git_snpath: a .git path formatting routine with output buffer
  Fix potentially dangerous uses of mkpath and git_path
  Fix mkpath abuse in dwim_ref and dwim_log of sha1_name.c
  Add mksnpath which allows you to specify the output buffer

Conflicts:
builtin-revert.c
rerere.c

16 years agoMerge branch 'mv/maint-branch-m-symref' into maint
Junio C Hamano [Sun, 9 Nov 2008 00:07:37 +0000 (16:07 -0800)] 
Merge branch 'mv/maint-branch-m-symref' into maint

* mv/maint-branch-m-symref:
  update-ref --no-deref -d: handle the case when the pointed ref is packed
  git branch -m: forbid renaming of a symref
  Fix git update-ref --no-deref -d.
  rename_ref(): handle the case when the reflog of a ref does not exist
  Fix git branch -m for symrefs.

16 years agopush: fix local refs update if already up-to-date
Clemens Buchacher [Wed, 5 Nov 2008 20:55:54 +0000 (21:55 +0100)] 
push: fix local refs update if already up-to-date

git push normally updates local refs only after a successful push. If the
remote already has the updates -- pushed indirectly through another repository,
for example -- we forget to update local tracking refs.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodo not force write of packed refs
Clemens Buchacher [Wed, 5 Nov 2008 20:55:53 +0000 (21:55 +0100)] 
do not force write of packed refs

We force writing a ref if it does not exist. Originally, we only had to look
for the ref file to check if it existed. Now we have to look for a packed ref
as well. Luckily, resolve_ref already does all the work for us.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agotag: Add more tests about mixing incompatible modes and options
Samuel Tardieu [Tue, 4 Nov 2008 23:20:36 +0000 (00:20 +0100)] 
tag: Add more tests about mixing incompatible modes and options

Signed-off-by: Samuel Tardieu <sam@rfc1149.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agotag: Check that options are only allowed in the appropriate mode
Samuel Tardieu [Tue, 4 Nov 2008 23:20:31 +0000 (00:20 +0100)] 
tag: Check that options are only allowed in the appropriate mode

If "git tag -d -l -v ..." is called, only "-l" is honored, which is
arbitrary and wrong. Also, unrecognized options are accepted in the
wrong modes, causing for example "git tag -n 100" to create a tag
named "100" while the user may have wanted to type "git tag -n100".

This patch checks that "git tag" knows in what mode it operates before
performing any operation and accepts only the related options.

Signed-off-by: Samuel Tardieu <sam@rfc1149.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoformat-patch documentation: mention the special case of showing a single commit
Junio C Hamano [Mon, 3 Nov 2008 04:45:55 +0000 (20:45 -0800)] 
format-patch documentation: mention the special case of showing a single commit

Even long timers seem to have missed that "format-patch -1 $commit" is a
much simpler and more obvious way to say "format-patch $commit^..$commit"
from the current documentation (and an example "format-patch -3 $commit"
to get three patches).  Add an explicit instruction in a much earlier part
of the documentation to make it easier to find.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd reference for status letters in documentation.
Yann Dirson [Sun, 2 Nov 2008 13:37:28 +0000 (14:37 +0100)] 
Add reference for status letters in documentation.

Also fix error in diff_filepair::status documentation, and point to
the in-code reference as well as the doc.

Signed-off-by: Yann Dirson <ydirson@altern.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocument that git-log takes --all-match.
Mikael Magnusson [Sun, 2 Nov 2008 18:32:46 +0000 (19:32 +0100)] 
Document that git-log takes --all-match.

Signed-off-by: Mikael Magnusson <mikachu@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUpdate draft 1.6.0.4 release notes
Junio C Hamano [Sun, 2 Nov 2008 22:35:41 +0000 (14:35 -0800)] 
Update draft 1.6.0.4 release notes

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'js/maint-fetch-update-head' into maint
Junio C Hamano [Sun, 2 Nov 2008 21:37:16 +0000 (13:37 -0800)] 
Merge branch 'js/maint-fetch-update-head' into maint

* js/maint-fetch-update-head:
  pull: allow "git pull origin $something:$current_branch" into an unborn branch
  Fix fetch/pull when run without --update-head-ok

16 years agoMerge branch 'jk/maint-ls-files-other' into maint
Junio C Hamano [Sun, 2 Nov 2008 21:37:13 +0000 (13:37 -0800)] 
Merge branch 'jk/maint-ls-files-other' into maint

* jk/maint-ls-files-other:
  refactor handling of "other" files in ls-files and status

16 years agoMerge branch 'jc/maint-reset-remove-unmerged-new' into maint
Junio C Hamano [Sun, 2 Nov 2008 21:36:20 +0000 (13:36 -0800)] 
Merge branch 'jc/maint-reset-remove-unmerged-new' into maint

* jc/maint-reset-remove-unmerged-new:
  reset --hard/read-tree --reset -u: remove unmerged new paths

16 years agoMerge branch 'jc/maint-co-track' into maint
Junio C Hamano [Sun, 2 Nov 2008 21:36:14 +0000 (13:36 -0800)] 
Merge branch 'jc/maint-co-track' into maint

* jc/maint-co-track:
  Enhance hold_lock_file_for_{update,append}() API
  demonstrate breakage of detached checkout with symbolic link HEAD
  Fix "checkout --track -b newbranch" on detached HEAD

16 years agoStart 1.6.0.4 cycle
Junio C Hamano [Sun, 2 Nov 2008 07:14:04 +0000 (00:14 -0700)] 
Start 1.6.0.4 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoadd instructions on how to send patches to the mailing list with Gmail
Tom Preston-Werner [Sat, 1 Nov 2008 15:28:18 +0000 (15:28 +0000)] 
add instructions on how to send patches to the mailing list with Gmail

Gmail is one of the most popular email providers in the world. Now that Gmail
supports IMAP, sending properly formatted patches via `git imap-send` is
trivial. This section in SubmittingPatches explains how to do so.

Signed-off-by: Tom Preston-Werner <tom@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/gitattributes: Add subsection header for each attribute
Jakub Narebski [Sat, 1 Nov 2008 06:24:55 +0000 (06:24 +0000)] 
Documentation/gitattributes: Add subsection header for each attribute

This makes attributes easier to find; before this patch some
attributes had individual subsections, and some didn't.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit send-email: avoid leaking directory file descriptors.
Pierre Habouzit [Fri, 31 Oct 2008 18:57:10 +0000 (18:57 +0000)] 
git send-email: avoid leaking directory file descriptors.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agosend-pack: do not send out single-level refs such as refs/stash
Jeff King [Wed, 29 Oct 2008 05:17:55 +0000 (05:17 +0000)] 
send-pack: do not send out single-level refs such as refs/stash

Since no version of receive-pack accepts these "funny refs", we should
mirror the check when considering the list of refs to send. IOW, don't
even make them eligible for matching or mirroring.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agofix overlapping memcpy in normalize_absolute_path
Jeff King [Thu, 23 Oct 2008 04:32:23 +0000 (04:32 +0000)] 
fix overlapping memcpy in normalize_absolute_path

The comments for normalize_absolute_path explicitly claim
that the source and destination buffers may be the same
(though they may not otherwise overlap). Thus the call to
memcpy may involve copying overlapping data, and memmove
should be used instead.

This fixes a valgrind error in t1504.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agopack-objects: avoid reading uninitalized data
Jeff King [Thu, 23 Oct 2008 04:31:03 +0000 (04:31 +0000)] 
pack-objects: avoid reading uninitalized data

In the main loop of find_deltas, we do:

  struct object_entry *entry = *list++;
  ...
  if (!*list_size)
  ...
  break

Because we look at and increment *list _before_ the check of
list_size, in the very last iteration of the loop we will
look at uninitialized data, and increment the pointer beyond
one past the end of the allocated space. Since we don't
actually do anything with the data until after the check,
this is not a problem in practice.

But since it technically violates the C standard, and
because it provokes a spurious valgrind warning, let's just
move the initialization of entry to a safe place.

This fixes valgrind errors in t5300, t5301, t5302, t303, and
t9400.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocorrect cache_entry allocation
Jeff King [Thu, 23 Oct 2008 04:30:58 +0000 (04:30 +0000)] 
correct cache_entry allocation

Most cache_entry structs are allocated by using the
cache_entry_size macro, which rounds the size of the struct
up to the nearest multiple of 8 bytes (presumably to avoid
memory fragmentation).

There is one exception: the special "conflict entry" is
allocated with an empty name, and so is explicitly given
just one extra byte to hold the NUL.

However, later code doesn't realize that this particular
struct has been allocated differently, and happily tries
reading and copying it based on the ce_size macro, which
assumes the 8-byte alignment.

This can lead to reading uninitalized data, though since
that data is simply padding, there shouldn't be any problem
as a result. Still, it makes sense to hold the padding
assumption so as not to surprise later maintainers.

This fixes valgrind errors in t1005, t3030, t4002, and
t4114.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint' of git://repo.or.cz/git-gui into maint
Junio C Hamano [Sun, 2 Nov 2008 05:31:14 +0000 (22:31 -0700)] 
Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
  git-gui: Help identify aspell version on Windows too