git.git
16 years agobisect: test merge base if good rev is not an ancestor of bad rev
Christian Couder [Fri, 22 Aug 2008 03:52:22 +0000 (05:52 +0200)]
bisect: test merge base if good rev is not an ancestor of bad rev

Before this patch, "git bisect", when it was given some good revs that
are not ancestor of the bad rev, didn't check if the merge bases were
good. "git bisect" just supposed that the user knew what he was doing,
and that, when he said the revs were good, he knew that it meant that
all the revs in the history leading to the good revs were also
considered good.

But in pratice, the user may not know that a good rev is not an
ancestor of the bad rev, or he may not know/remember that all revs
leading to the good rev will be considered good. So he may give a good
rev that is a sibling, instead of an ancestor, of the bad rev, when in
fact there can be one rev becoming good in the branch of the good rev
(because the bug was already fixed there, for example) instead of one
rev becoming bad in the branch of the bad rev.

For example, if there is the following history:

    A--B--C--D
\
 E--F

and we launch "git bisect start D F" then only C and D would have been
considered as possible first bad commit before this patch. This could
invite user errors; F could be the commit that fixes the bug that exists
everywhere else.

The purpose of this patch is to detect when "git bisect" is passed
some good revs that are not ancestors of the bad rev, and then to first
ask the user to test the merge bases between the good and bad revs.

If the merge bases are good then all is fine, we can continue
bisecting. Otherwise, if one merge base is bad, it means that the
assumption that all revs leading to the good one are good too is
wrong and we error out. In the case where one merge base is skipped we
issue a warning and then continue bisecting anyway.

These checks will also catch the case where good and bad have been
mistaken. This means that we can remove the check that was done latter
on the output of "git rev-list --bisect-vars".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'mv/merge-custom'
Junio C Hamano [Thu, 28 Aug 2008 00:28:31 +0000 (17:28 -0700)]
Merge branch 'mv/merge-custom'

* mv/merge-custom:
  t7606: fix custom merge test
  Fix "git-merge -s bogo" help text
  Update .gitignore to ignore git-help
  Builtin git-help.
  builtin-help: always load_command_list() in cmd_help()
  Add a second testcase for handling invalid strategies in git-merge
  Add a new test for using a custom merge strategy
  builtin-merge: allow using a custom strategy
  builtin-help: make some internal functions available to other builtins

Conflicts:
help.c

16 years agoMerge branch 'ml/submodule'
Junio C Hamano [Thu, 28 Aug 2008 00:16:30 +0000 (17:16 -0700)]
Merge branch 'ml/submodule'

* ml/submodule:
  git-submodule.sh - Remove trailing / from URL if found
  git-submodule.sh - Remove trailing / from URL if found

16 years agoMerge branch 'am/cherry-pick-rerere'
Junio C Hamano [Wed, 27 Aug 2008 23:40:09 +0000 (16:40 -0700)]
Merge branch 'am/cherry-pick-rerere'

* am/cherry-pick-rerere:
  Make cherry-pick use rerere for conflict resolution.

16 years agoMerge branch 'jc/add-addremove'
Junio C Hamano [Wed, 27 Aug 2008 23:39:57 +0000 (16:39 -0700)]
Merge branch 'jc/add-addremove'

* jc/add-addremove:
  builtin-add.c: optimize -A option and "git add ."
  builtin-add.c: restructure the code for maintainability

16 years agoMerge branch 'np/verify-pack'
Junio C Hamano [Wed, 27 Aug 2008 23:39:46 +0000 (16:39 -0700)]
Merge branch 'np/verify-pack'

* np/verify-pack:
  discard revindex data when pack list changes

16 years agoMerge branch 'da/submodule-sync'
Junio C Hamano [Wed, 27 Aug 2008 23:39:19 +0000 (16:39 -0700)]
Merge branch 'da/submodule-sync'

* da/submodule-sync:
  git-submodule: add "sync" command

16 years agoMerge branch 'maint'
Junio C Hamano [Wed, 27 Aug 2008 23:23:54 +0000 (16:23 -0700)]
Merge branch 'maint'

* maint:
  ctype.c: protect tiny C preprocessor constants
  index-pack: be careful after fixing up the header/footer

16 years agoctype.c: protect tiny C preprocessor constants
Junio C Hamano [Wed, 27 Aug 2008 23:14:22 +0000 (16:14 -0700)]
ctype.c: protect tiny C preprocessor constants

Some platforms contaminate the preprocessor token namespace with their own
definition of SS without being asked.  Avoid getting hit by redefinition
warning messages by explicitly undef SS, AA and DD shorthand we use in this
table definition.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoindex-pack: be careful after fixing up the header/footer
Linus Torvalds [Wed, 27 Aug 2008 19:48:00 +0000 (12:48 -0700)]
index-pack: be careful after fixing up the header/footer

The index-pack command, when processing a thin pack, fixed up the pack
after-the-fact.  It forgets to fsync the result, because it only did that
in one path rather in all cases of fixup.

This moves the fsync_or_die() to the fix-up routine itself, rather than
doing it in one of the callers, so that all cases are covered.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake it possible to abort the submission of a change to Perforce
Simon Hausmann [Wed, 27 Aug 2008 07:30:29 +0000 (09:30 +0200)]
Make it possible to abort the submission of a change to Perforce

Currently it is not possible to skip the submission of a change to Perforce
when running git-p4 submit. This patch compares the modification time before
and after the submit editor invokation and offers a prompt for skipping if
the submit template file was not saved.

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'af/maint-install-no-handlink'
Junio C Hamano [Wed, 27 Aug 2008 00:08:25 +0000 (17:08 -0700)]
Merge branch 'af/maint-install-no-handlink'

* af/maint-install-no-handlink:
  Makefile: always provide a fallback when hardlinks fail

16 years agoMerge branch 'jc/no-slim-shell'
Junio C Hamano [Wed, 27 Aug 2008 00:08:22 +0000 (17:08 -0700)]
Merge branch 'jc/no-slim-shell'

* jc/no-slim-shell:
  Revert "Build-in "git-shell""

16 years agoMerge branch 'maint'
Junio C Hamano [Wed, 27 Aug 2008 00:08:19 +0000 (17:08 -0700)]
Merge branch 'maint'

* maint:
  index-pack: setup git repository
  Suppress some bash redirection error messages
  Fix a warning (on cygwin) to allow -Werror
  Fix "git log -i --grep"

16 years agoformat-patch: use default diff format even with patch options
Jeff King [Mon, 25 Aug 2008 02:10:29 +0000 (22:10 -0400)]
format-patch: use default diff format even with patch options

Previously, running "git format-patch -U5" would cause the
low-level diff machinery to change the diff output format
from "not specified" to "patch". This meant that
format-patch thought we explicitly specified a diff output
format, and would not use the default format. The resulting
message lacked both the diffstat and the summary, as well as
the separating "---".

Now format-patch explicitly checks for this condition and
uses the default. That means that "git format-patch -p" will
now have the "-p" ignored.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoindex-pack: setup git repository
Nguyễn Thái Ngọc Duy [Tue, 26 Aug 2008 14:32:42 +0000 (21:32 +0700)]
index-pack: setup git repository

"git index-pack" is an independent command and does not setup git
repository while still need pack.indexversion. It may miss the
info if it is in a subdirectory of the repository.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoSuppress some bash redirection error messages
Ramsay Jones [Tue, 26 Aug 2008 17:52:57 +0000 (18:52 +0100)]
Suppress some bash redirection error messages

In particular, when testing if the filesystem allows tabs in
filenames, bash issues an error something like:

./t4016-diff-quote.sh: pathname with HT: No such file or directory

which is caused by the failure of the (stdout) redirection,
since the file cannot be created. In order to suppress the
error message, you must redirect stderr to /dev/null, *before*
the stdout redirection on the command-line.

Also, remove a redundant filesystem check from the begining of
the t3902-quoted.sh test and standardise the "test skipped"
message to 'say' on exit.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix a warning (on cygwin) to allow -Werror
Ramsay Jones [Tue, 26 Aug 2008 17:50:37 +0000 (18:50 +0100)]
Fix a warning (on cygwin) to allow -Werror

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMakefile: always provide a fallback when hardlinks fail
Andreas Färber [Mon, 25 Aug 2008 15:33:03 +0000 (17:33 +0200)]
Makefile: always provide a fallback when hardlinks fail

We make hardlinks from "git" to "git-<cmd>" built-ins and have been
careful to avoid cross-device links when linking "git-<cmd>" to
gitexecdir.

However, we were not prepared to deal with a build directory that is
incapable of making hard links within itself. This patch corrects it.

Instead of temporarily linking "git" to gitexecdir, directly link "git-
add", falling back to "cp". Try hardlinking that as "git-<cmd>", falling
back to symlinks or "cp" on error.

While at it, avoid 100+ error messages from hardlink failures when we are
going to fall back to symlinks or "cp" by redirecting the standard error
to /dev/null.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-submodule: add "sync" command
David Aguilar [Sun, 24 Aug 2008 19:43:37 +0000 (12:43 -0700)]
git-submodule: add "sync" command

When a submodule's URL changes upstream, existing submodules
will be out of sync since their remote."$origin".url will still
be set to the old value.

This adds a "git submodule sync" command that reads submodules'
URLs from .gitmodules and updates them accordingly.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRevert "Build-in "git-shell""
Junio C Hamano [Tue, 26 Aug 2008 05:39:17 +0000 (22:39 -0700)]
Revert "Build-in "git-shell""

This reverts commit daa0cc9a92c9c2c714aa5f7da6d0ff65b93e0698.
It was a stupid idea to do this; when run as a log-in shell,
it is spawned with argv[0] set to "-git-shell", so the usual
name-based dispatch would not work to begin with.

16 years agoFix "git log -i --grep"
Jeff King [Mon, 25 Aug 2008 06:15:05 +0000 (02:15 -0400)]
Fix "git log -i --grep"

This has been broken in v1.6.0 due to the reorganization of
the revision option parsing code. The "-i" is completely
ignored, but works fine in "git log --grep -i".

What happens is that the code for "-i" looks for
revs->grep_filter; if it is NULL, we do nothing, since there
are no grep filters. But that is obviously not correct,
since we want it to influence the later --grep option. Doing
it the other way around works, since "-i" just impacts the
existing grep_filter option.

Instead, we now always initialize the grep_filter member and
just fill in options and patterns as we get them. This means
that we can no longer check grep_filter for NULL, but
instead must check the pattern list to see if we have any
actual patterns.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoInstall git-shell in bindir, too
Tommi Virtanen [Sun, 24 Aug 2008 20:23:25 +0000 (23:23 +0300)]
Install git-shell in bindir, too

/etc/passwd shell field must be something execable, you can't enter
"/usr/bin/git shell" there. git-shell must be present as a separate
executable, or it is useless.

Signed-off-by: Tommi Virtanen <tv@eagain.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'jc/no-slim-shell'
Junio C Hamano [Sun, 24 Aug 2008 23:14:22 +0000 (16:14 -0700)]
Merge branch 'jc/no-slim-shell'

* jc/no-slim-shell:
  Build-in "git-shell"
  shell: do not play duplicated definition games to shrink the executable

16 years agoMerge branch 'maint' to sync with 1.6.0.1
Junio C Hamano [Sun, 24 Aug 2008 21:48:36 +0000 (14:48 -0700)]
Merge branch 'maint' to sync with 1.6.0.1

16 years agoGIT 1.6.0.1 v1.6.0.1
Junio C Hamano [Sun, 24 Aug 2008 21:47:24 +0000 (14:47 -0700)]
GIT 1.6.0.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'ag/maint-combine-diff-fix' into maint
Junio C Hamano [Sun, 24 Aug 2008 21:32:18 +0000 (14:32 -0700)]
Merge branch 'ag/maint-combine-diff-fix' into maint

* ag/maint-combine-diff-fix:
  Respect core.autocrlf in combined diff

16 years agoMerge branch 'mv/maint-merge-fix' into maint
Junio C Hamano [Sun, 24 Aug 2008 21:29:37 +0000 (14:29 -0700)]
Merge branch 'mv/maint-merge-fix' into maint

* mv/maint-merge-fix:
  merge: fix numerus bugs around "trivial merge" area

16 years agogit-submodule - Use "get_default_remote" from git-parse-remote
Mark Levedahl [Sun, 24 Aug 2008 18:46:10 +0000 (14:46 -0400)]
git-submodule - Use "get_default_remote" from git-parse-remote

Resolve_relative_url was using its own code for this function, but
this is duplication with the best result that this continues to work.
Replace with the common function provided by git-parse-remote.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: clarify pager configuration
Jonathan Nieder [Sun, 24 Aug 2008 05:28:32 +0000 (00:28 -0500)]
Documentation: clarify pager configuration

The unwary user may not know how to disable the -FRSX options.

Signed-off-by: Jonathan Nieder <jrnieder@uchicago.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: clarify pager.<cmd> configuration
Jonathan Nieder [Sun, 24 Aug 2008 05:38:06 +0000 (00:38 -0500)]
Documentation: clarify pager.<cmd> configuration

It was not obvious from the text that pager.<cmd> is a boolean
setting.

While we're changing the description, make some other
improvements: lest we forget and fret, clarify that -p and
pager.<cmd> do not kick in when stdout is not a tty; point to
related core.pager and GIT_PAGER settings; use renamed --paginate
option.

Signed-off-by: Jonathan Nieder <jrnieder@uchicago.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoClean up the git-p4 documentation
Simon Hausmann [Sun, 24 Aug 2008 14:12:23 +0000 (16:12 +0200)]
Clean up the git-p4 documentation

This patch massages the documentation a bit for improved readability and cleans
it up from outdated options/commands.

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRespect core.autocrlf in combined diff
Alexander Gavrilov [Sat, 23 Aug 2008 19:21:21 +0000 (23:21 +0400)]
Respect core.autocrlf in combined diff

Fix git-diff to make it produce useful 3-way diffs for merge conflicts in
repositories with autocrlf enabled. Otherwise it always reports that the
whole file was changed, because it uses the contents from the working tree
without necessary conversion.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMakefile: enable SNPRINTF_RETURNS_BOGUS for HP-UX
Miklos Vajna [Sat, 23 Aug 2008 22:07:55 +0000 (00:07 +0200)]
Makefile: enable SNPRINTF_RETURNS_BOGUS for HP-UX

In 81cc66a, customization has been added to Makefile for supporting
HP-UX, but git commit is still problematic. This should fix the issue.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Acked-by: Robert Schiele <rschiele@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7606: fix custom merge test
Junio C Hamano [Sun, 24 Aug 2008 02:23:22 +0000 (19:23 -0700)]
t7606: fix custom merge test

Custom merge strategy does not even kick in when the merge is truly
trivial.  The test depended on the behaviour in the git-merge rewritten in
C that broke the trivial merge completely.

Make the test to work on a non-trivial merge to make sure the strategy
kicks in.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Sun, 24 Aug 2008 01:28:37 +0000 (18:28 -0700)]
Merge branch 'maint'

* maint:
  unpack_trees(): protect the handcrafted in-core index from read_cache()
  git-p4: Fix one-liner in p4_write_pipe function.
  Completion: add missing '=' for 'diff --diff-filter'
  Fix 'git help help'

16 years agomerge: fix numerus bugs around "trivial merge" area
Junio C Hamano [Sat, 23 Aug 2008 19:56:57 +0000 (12:56 -0700)]
merge: fix numerus bugs around "trivial merge" area

The "trivial merge" codepath wants to optimize itself by making an
internal call to the read-tree machinery, but it does not read the index
before doing so, and the codepath is never exercised.  Incidentally, this
failure to read the index upfront means that the safety to refuse doing
anything when the index is unmerged does not kick in, either.

These two problem are fixed by using read_cache_unmerged() that does read
the index before checking if it is unmerged at the beginning of
cmd_merge().

The primary logic of the merge, however, assumes that the process never
reads the index in-core, and the call to write_cache_as_tree() it makes
from write_tree_trivial() will always read from the on-disk index that is
prepared the strategy back-ends.  This assumption is now broken by the
above fix.  To fix this issue, we now call discard_cache() before calling
write_tree_trivial() when it wants to write the on-disk index as a tree.

When multiple strategies are tried, their results are evaluated by reading
the resulting index and inspecting it.  The codepath needs to make a call
to read_cache() for each successful strategy, and for that to work, they
need to discard_cache() the one read by the previous round.

Also the "trivial merge" forgot that the current commit is one of the
parents of the resulting commit.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agounpack_trees(): protect the handcrafted in-core index from read_cache()
Junio C Hamano [Sat, 23 Aug 2008 19:57:30 +0000 (12:57 -0700)]
unpack_trees(): protect the handcrafted in-core index from read_cache()

unpack_trees() rebuilds the in-core index from scratch by allocating a new
structure and finishing it off by copying the built one to the final
index.

The resulting in-core index is Ok for most use, but read_cache() does not
recognize it as such.  The function is meant to be no-op if you already
have loaded the index, until you call discard_cache().

This change the way read_cache() detects an already initialized in-core
index, by introducing an extra bit, and marks the handcrafted in-core
index as initialized, to avoid this problem.

A better fix in the longer term would be to change the read_cache() API so
that it will always discard and re-read from the on-disk index to avoid
confusion.  But there are higher level API that have relied on the current
semantics, and they and their users all need to get converted, which is
outside the scope of 'maint' track.

An example of such a higher level API is write_cache_as_tree(), which is
used by git-write-tree as well as later Porcelains like git-merge, revert
and cherry-pick.  In the longer term, we should remove read_cache() from
there and add one to cmd_write_tree(); other callers expect that the
in-core index they prepared is what gets written as a tree so no other
change is necessary for this particular codepath.

The original version of this patch marked the index by pointing an
otherwise wasted malloc'ed memory with o->result.alloc, but this version
uses Linus's idea to use a new "initialized" bit, which is conceptually
much cleaner.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-p4: Fix one-liner in p4_write_pipe function.
Tor Arvid Lund [Thu, 21 Aug 2008 21:11:40 +0000 (23:11 +0200)]
git-p4: Fix one-liner in p4_write_pipe function.

The function built a p4 command string via the p4_build_cmd function, but
ignored the result.

Signed-off-by: Tor Arvid Lund <torarvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-submodule: replace duplicated code with a module_list function
David Aguilar [Fri, 22 Aug 2008 07:30:50 +0000 (00:30 -0700)]
git-submodule: replace duplicated code with a module_list function

Several call sites in git-submodule.sh used the same idiom for getting
submodule information:

git ls-files --stage -- "$@" | grep '^160000 '

This patch removes this duplication by introducing a module_list function.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodiscard revindex data when pack list changes
Nicolas Pitre [Fri, 22 Aug 2008 19:45:53 +0000 (15:45 -0400)]
discard revindex data when pack list changes

This is needed to fix verify-pack -v with multiple pack arguments.

Also, in theory, revindex data (if any) must be discarded whenever
reprepare_packed_git() is called. In practice this is hard to trigger
though.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-merge documentation: more details about resolving conflicts
Dan Hensgen [Fri, 22 Aug 2008 03:32:00 +0000 (23:32 -0400)]
git-merge documentation: more details about resolving conflicts

Signed-off-by: Dan Hensgen <dan@methodhead.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoExtend "checkout --track" DWIM to support more cases
Alex Riesen [Thu, 21 Aug 2008 17:23:20 +0000 (19:23 +0200)]
Extend "checkout --track" DWIM to support more cases

The code handles additionally "refs/remotes/<something>/name",
"remotes/<something>/name", and "refs/<namespace>/name".

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRevert "Convert output messages in merge-recursive to past tense."
Jonathan del Strother [Fri, 22 Aug 2008 17:18:44 +0000 (18:18 +0100)]
Revert "Convert output messages in merge-recursive to past tense."

During a conflicting merge, you would typically see:

  Auto-merged foo.txt
  CONFLICT (content): Merge conflict in foo.txt
  Recorded preimage for 'foo.txt'
  Automatic merge failed; fix conflicts and then commit the result.

and left wondering what happened to "foo.txt".  Did it succeed, and then
conflicted, and then what?

This is because historically there was a progress bar displayed before the
auto-merge is mentioned, and it was expected to take long time, before we
can say "Auto-merged foo.txt".  It turns out it was not the case, and the
original wording "Auto-merging foo.txt" we used to have before 89f40be
(Convert output messages in merge-recursive to past tense., 2007-01-14) is
better.

Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoCompletion: add missing '=' for 'diff --diff-filter'
Eric Raible [Fri, 22 Aug 2008 17:25:06 +0000 (10:25 -0700)]
Completion: add missing '=' for 'diff --diff-filter'

Signed-off-by: Eric Raible <raible@gmail.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agotemplates/Makefile: install is unnecessary, just use mkdir -p
Junio C Hamano [Fri, 22 Aug 2008 00:31:50 +0000 (19:31 -0500)]
templates/Makefile: install is unnecessary, just use mkdir -p

The native install on some platforms (namely IRIX 6.5) treats non-absolute
paths as being relative to the root directory rather than relative to
the current directory. Work around this by avoiding install in this case
since it is unnecessary, and instead depend on the local umask setting
and use mkdir.

Tested-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoremote.c: add a function for deleting a refspec array and use it (twice)
Brandon Casey [Fri, 22 Aug 2008 00:16:30 +0000 (19:16 -0500)]
remote.c: add a function for deleting a refspec array and use it (twice)

A number of call sites allocate memory for a refspec array, populate
its members with heap memory, and then free only the refspec pointer
while leaking the memory allocated for the member elements. Provide
a function for freeing the elements of a refspec array and the array
itself.

Caution to callers: code paths must be checked to ensure that the
refspec members "src" and "dst" can be passed to free.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agofilter-branch: Grok special characters in tag names
Johannes Sixt [Thu, 21 Aug 2008 14:45:11 +0000 (16:45 +0200)]
filter-branch: Grok special characters in tag names

The tag rewriting code used a 'sed' expression to substitute the new tag
name into the corresponding field of the annotated tag object. But this is
problematic if the tag name contains special characters. In particular,
if the tag name contained a slash, then the 'sed' expression had a syntax
error. We now protect against this by using 'printf' to assemble the
tag header.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agotest-lib: do not remove trash_directory if called with --debug
Johannes Schindelin [Thu, 21 Aug 2008 07:49:12 +0000 (09:49 +0200)]
test-lib: do not remove trash_directory if called with --debug

Sometimes you want to keep the trash directory, even if all tests
passed.  For example, when extending tests, it comes it quite handy.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoprovide more errors for the "merge into empty head" case
Paolo Bonzini [Thu, 21 Aug 2008 12:14:18 +0000 (14:14 +0200)]
provide more errors for the "merge into empty head" case

A squash merge into an unborn branch could be implemented by building the
index from the merged-from branch, and doing a single commit, but this is
not supported yet.

A non-fast-forward merge into an unborn branch does not make any sense,
because you cannot make a merge commit if you don't have a commit to use
as the parent.

Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake reflog query '@{1219188291}' act as '@{2008.8.19.16:24:51.-0700}'
Shawn O. Pearce [Thu, 21 Aug 2008 15:40:44 +0000 (08:40 -0700)]
Make reflog query '@{1219188291}' act as '@{2008.8.19.16:24:51.-0700}'

As we support seconds-since-epoch in $GIT_COMMITTER_TIME we should
also support it in a reflog @{...} style notation.  We can easily
tell this part from @{nth} style notation by looking to see if the
value is unreasonably large for an @{nth} style notation.

The value 100000000 was chosen as it is already used by date.c to
disambiguate yyyymmdd format from a seconds-since-epoch time value.

A reflog with 100,000,000 record entries is also simply not valid.
Such a reflog would require at least 7.7 GB to store just the old
and new SHA-1 values.  So our randomly chosen upper limit for @{nth}
notation is "big enough".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoconfig.mak.in: Pass on LDFLAGS from configure
Neil Roberts [Thu, 21 Aug 2008 19:38:23 +0000 (20:38 +0100)]
config.mak.in: Pass on LDFLAGS from configure

The configure script allows you to specify flags to pass to the linker
step in the LDFLAGS environment variable but this was being ignored in
the Makefile. Now a make variable gets set to the value passed down
from the configure script.

Signed-off-by: Neil Roberts <bpeeluk@yahoo.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-submodule.sh - Remove trailing / from URL if found
Mark Levedahl [Thu, 21 Aug 2008 23:54:01 +0000 (19:54 -0400)]
git-submodule.sh - Remove trailing / from URL if found

git clone does not complain if a trailing '/' is included in the origin
URL, but doing so causes resolution of a submodule's URL relative to the
superproject to fail. Trailing /'s are likely when cloning locally using
tab-completion, so the slash may appear in either superproject or
submodule URL. So, ignore the trailing slash if it already exists in
the superproject's URL, and don't record one for the submodule (which
could itself have submodules...).

The problem I'm trying to fix is that a number of folks have
superprojects checked out where the recorded origin URL has a trailing
/, and a submodule has its origin in a directory sitting right next to
the superproject on the server. Thus, we have:

superproject url = server:/public/super
submodoule url = server:/public/sub1

However, in the checked out superproject's .git/config

[remote "origin"]
url = server:/public/super/

and for similar reasons, the submodule has its URL recorded in .gitmodules as
[submodule "sub"]

path = submodule1
url = ../sub1/

resolve_relative_url gets the submodule's recorded url as $1, which
the caller retrieved from .gitmodules, and retrieves the superprojects
origin from .git/config. So in this case resolve_relative_url has
that:

url = ../sub1/
remoteurl = server:/public/super/

So, without any patch, resolve_relative_url computes the submodule's URL as:

server:/public/super/sub1/

rather than

server:/public/sub1

In summary, it is essential that resolve_relative_url strip the
trailing / from the superproject's url before starting, and
beneficial if it assures that the result does not contain
a trailing / as the submodule may itself also be a superproject.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix 'git help help'
Miklos Vajna [Thu, 21 Aug 2008 14:21:48 +0000 (16:21 +0200)]
Fix 'git help help'

git help foo invokes man git-foo if foo is a git command, otherwise it
invokes man gitfoo. 'help' is not a git command, but the manual page is
called git-help, so add this special exception.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Acked-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Thu, 21 Aug 2008 08:54:49 +0000 (01:54 -0700)]
Merge branch 'maint'

* maint:
  compat/snprintf.c: handle snprintf's that always return the # chars transmitted
  git-svn: fix dcommit to urls with embedded usernames
  revision.h: make show_early_output an extern which is defined in revision.c

16 years agocompat/snprintf.c: handle snprintf's that always return the # chars transmitted
Brandon Casey [Thu, 21 Aug 2008 01:53:50 +0000 (20:53 -0500)]
compat/snprintf.c: handle snprintf's that always return the # chars transmitted

Some platforms provide a horribly broken snprintf. More broken than the
platforms that return -1 when there is too little space in the target buffer
for the formatted string. Some platforms provide an snprintf which _always_
returns the number of characters transmitted to the buffer, regardless of
whether there was enough space or not.

IRIX 6.5 is such a platform. IRIX does have a working snprintf(), but it
is only provided when _NO_XOPEN5 evaluates to zero, and this only happens
if _XOPEN_SOURCE is defined, but definition of _XOPEN_SOURCE prevents
inclusion of many other common functions and defines. So it must be avoided.

Work around these horribly broken snprintf implementations by detecting an
snprintf call which results in the number of transmitted characters exactly
equal to the length of our buffer and retrying with a larger buffer just to
be safe.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Acked-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoTeach "git diff -p" HTML funcname patterns
Johan Herland [Wed, 20 Aug 2008 17:49:15 +0000 (19:49 +0200)]
Teach "git diff -p" HTML funcname patterns

Find lines with <h1>..<h6> tags.

[jc: while at it, reordered entries to sort alphabetically.]

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoTeach "git diff -p" Python funcname patterns
Kirill Smelkov [Wed, 20 Aug 2008 15:57:07 +0000 (19:57 +0400)]
Teach "git diff -p" Python funcname patterns

Find classes, functions, and methods definitions.

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-svn: fix dcommit to urls with embedded usernames
Eric Wong [Wed, 20 Aug 2008 07:30:06 +0000 (00:30 -0700)]
git-svn: fix dcommit to urls with embedded usernames

Don't rely on the extracted URL from working_head_info since that has the
username removed.  Instead use the $gs->full_url method (as before with
ba24e74 (git-svn: add ability to specify --commit-url for dcommit,
2008-08-07)) to give us the URL to commit to if --commit-url is not
specified.

Aditionally, since we clean usernames from URLs, checking the URL after
rebase can fail because it doesn't match the URL we used to commit; so
unconditionally provide a username-free URL for checking the result of the
refetch.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'ml/submodule-foreach'
Junio C Hamano [Thu, 21 Aug 2008 06:42:33 +0000 (23:42 -0700)]
Merge branch 'ml/submodule-foreach'

* ml/submodule-foreach:
  git-submodule - Add 'foreach' subcommand

16 years agoMerge branch 'pm/log-exit-code'
Junio C Hamano [Thu, 21 Aug 2008 06:42:29 +0000 (23:42 -0700)]
Merge branch 'pm/log-exit-code'

* pm/log-exit-code:
  Teach git log --exit-code to return an appropriate exit code
  Teach git log --check to return an appropriate exit code

16 years agoMerge branch 'sb/commit-tree-minileak'
Junio C Hamano [Thu, 21 Aug 2008 06:42:26 +0000 (23:42 -0700)]
Merge branch 'sb/commit-tree-minileak'

* sb/commit-tree-minileak:
  Fix commit_tree() buffer leak

16 years agoMerge branch 'pb/reflog-dwim'
Junio C Hamano [Thu, 21 Aug 2008 06:42:22 +0000 (23:42 -0700)]
Merge branch 'pb/reflog-dwim'

* pb/reflog-dwim:
  builtin-reflog: Allow reflog expire to name partial ref

16 years agoMerge branch 'jc/add-stop-at-symlink'
Junio C Hamano [Thu, 21 Aug 2008 06:42:18 +0000 (23:42 -0700)]
Merge branch 'jc/add-stop-at-symlink'

* jc/add-stop-at-symlink:
  add: refuse to add working tree items beyond symlinks
  update-index: refuse to add working tree items beyond symlinks

16 years agoMerge branch 'kh/diff-tree'
Junio C Hamano [Thu, 21 Aug 2008 06:41:59 +0000 (23:41 -0700)]
Merge branch 'kh/diff-tree'

* kh/diff-tree:
  Add test for diff-tree --stdin with two trees
  Teach git diff-tree --stdin to diff trees
  diff-tree: Note that the commit ID is printed with --stdin
  Refactoring: Split up diff_tree_stdin

16 years agoMerge branch 'mg/count-objects'
Junio C Hamano [Thu, 21 Aug 2008 06:41:54 +0000 (23:41 -0700)]
Merge branch 'mg/count-objects'

* mg/count-objects:
  count-objects: Add total pack size to verbose output

16 years agoMerge branch 'mz/push-verbose'
Junio C Hamano [Thu, 21 Aug 2008 06:41:51 +0000 (23:41 -0700)]
Merge branch 'mz/push-verbose'

* mz/push-verbose:
  Make push more verbose about illegal combination of options

16 years agoMerge branch 'jc/index-extended-flags'
Junio C Hamano [Thu, 21 Aug 2008 06:41:47 +0000 (23:41 -0700)]
Merge branch 'jc/index-extended-flags'

* jc/index-extended-flags:
  index: future proof for "extended" index entries

16 years agoMerge branch 'cc/merge-base-many'
Junio C Hamano [Thu, 21 Aug 2008 06:41:38 +0000 (23:41 -0700)]
Merge branch 'cc/merge-base-many'

* cc/merge-base-many:
  git-merge-octopus: use (merge-base A (merge B C D E...)) for stepwise merge
  merge-base-many: add trivial tests based on the documentation
  documentation: merge-base: explain "git merge-base" with more than 2 args
  merge-base: teach "git merge-base" to drive underlying merge_bases_many()

16 years agoMerge branch 'jc/test-deeper'
Junio C Hamano [Thu, 21 Aug 2008 06:40:59 +0000 (23:40 -0700)]
Merge branch 'jc/test-deeper'

* jc/test-deeper:
  tests: use $TEST_DIRECTORY to refer to the t/ directory

16 years agoMerge branch 'js/parallel-test'
Junio C Hamano [Thu, 21 Aug 2008 06:40:56 +0000 (23:40 -0700)]
Merge branch 'js/parallel-test'

* js/parallel-test:
  Update t/.gitignore to ignore all trash directories
  Enable parallel tests
  tests: Clarify dependencies between tests, 'aggregate-results' and 'clean'
  t9700: remove useless check

16 years agogit-submodule.sh - Remove trailing / from URL if found
Mark Levedahl [Wed, 20 Aug 2008 02:18:23 +0000 (22:18 -0400)]
git-submodule.sh - Remove trailing / from URL if found

git clone does not complain if a trailing '/' is included in the origin
URL, but doing so causes resolution of a submodule's URL relative to the
superproject to fail. Regardless of whether git is changed to remove the
trailing / before recording the URL, we should avoid this issue in
submodule as existing repositories can have this problem.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix "git-merge -s bogo" help text
Junio C Hamano [Thu, 21 Aug 2008 05:07:55 +0000 (22:07 -0700)]
Fix "git-merge -s bogo" help text

It does not make much sense to reuse the output code from "git help" to
show the list of commands to the standard output while giving the error
message before that to the standard error stream.  This makes the output
consistent to that of the 1.6.0 version of "git merge".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorevision.h: make show_early_output an extern which is defined in revision.c
Brandon Casey [Thu, 21 Aug 2008 00:34:30 +0000 (19:34 -0500)]
revision.h: make show_early_output an extern which is defined in revision.c

The variable show_early_output is defined in revision.c and should be
declared extern in revision.h so that the linker does not complain
about multiply defined variables.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUpdate draft release notes for 1.6.1
Junio C Hamano [Wed, 20 Aug 2008 23:32:15 +0000 (16:32 -0700)]
Update draft release notes for 1.6.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Wed, 20 Aug 2008 23:18:16 +0000 (16:18 -0700)]
Merge branch 'maint'

* maint:
  Update draft release notes for 1.6.0.1
  Add hints to revert documentation about other ways to undo changes
  Install templates with the user and group of the installing personality
  "git-merge": allow fast-forwarding in a stat-dirty tree
  completion: find out supported merge strategies correctly
  decorate: allow const objects to be decorated
  for-each-ref: cope with tags with incomplete lines
  diff --check: do not get confused by new blank lines in the middle
  remote.c: remove useless if-before-free test
  mailinfo: avoid violating strbuf assertion
  git format-patch: avoid underrun when format.headers is empty or all NLs

16 years agoUpdate draft release notes for 1.6.0.1
Junio C Hamano [Wed, 20 Aug 2008 22:19:00 +0000 (15:19 -0700)]
Update draft release notes for 1.6.0.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd hints to revert documentation about other ways to undo changes
Tarmigan Casebolt [Tue, 19 Aug 2008 19:50:31 +0000 (12:50 -0700)]
Add hints to revert documentation about other ways to undo changes

Based on its name, people may read the 'git revert' documentation when
they want to undo local changes, especially people who have used other
SCM's.  'git revert' may not be what they had in mind, but git
provides several other ways to undo changes to files.  We can help
them by pointing them towards the git commands that do what they might
want to do.

Cc: Daniel Barkalow <barkalow@iabervon.org>
Cc: Lea Wiemann <lewiemann@gmail.com>
Signed-off-by: Tarmigan Casebolt <tarmigan+git@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoInstall templates with the user and group of the installing personality
Johannes Sixt [Wed, 20 Aug 2008 15:36:25 +0000 (17:36 +0200)]
Install templates with the user and group of the installing personality

If 'make install' was run with sufficient privileges, then the installed
templates, which are copied using 'tar', would receive the user and group
of whoever built git. This instructs 'tar' to ignore the user and group
that are recorded in the archive.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years ago"git-merge": allow fast-forwarding in a stat-dirty tree
Junio C Hamano [Wed, 20 Aug 2008 22:09:28 +0000 (15:09 -0700)]
"git-merge": allow fast-forwarding in a stat-dirty tree

We used to refresh the index to clear stat-dirtyness before a fast-forward
merge.  Recent C rewrite forgot to do this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocompletion: find out supported merge strategies correctly
Junio C Hamano [Wed, 20 Aug 2008 21:13:42 +0000 (14:13 -0700)]
completion: find out supported merge strategies correctly

"git-merge" is a binary executable these days, and looking for assignment
to $all_strategies variable with grep/sed does not work well.

When asked for an unknown strategy, pre-1.6.0 and post-1.6.0 "git merge"
commands respectively say:

    $ $HOME/git-snap-v1.5.6.5/bin/git merge -s help
    available strategies are: recur recursive octopus resolve stupid ours subtree
    $ $HOME/git-snap-v1.6.0/bin/git merge -s help
    Could not find merge strategy 'help'.
    Available strategies are: recursive octopus resolve ours subtree.

both on their standard error stream.  We can use this to learn what
strategies are supported.

The sed script is written in such a way that it catches both old and new
message styles ("Available" vs "available", and the full stop at the end).
It also allows future versions of "git merge" to line-wrap the list of
strategies, and add extra comments, like this:

    $ $HOME/git-snap-v1.6.1/bin/git merge -s help
    Could not find merge strategy 'help'.
    Available strategies are: blame recursive octopus resolve ours
    subtree.
    Also you have custom strategies: theirs

    Make sure you spell strategy names correctly.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodecorate: allow const objects to be decorated
Jeff King [Wed, 20 Aug 2008 17:55:33 +0000 (13:55 -0400)]
decorate: allow const objects to be decorated

We don't actually modify the struct object, so there is no
reason not to accept const versions (and this allows other
callsites, like the next patch, to use the decoration
machinery).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agofor-each-ref: cope with tags with incomplete lines
Junio C Hamano [Wed, 20 Aug 2008 19:29:27 +0000 (12:29 -0700)]
for-each-ref: cope with tags with incomplete lines

If you have a tag with a single, incomplete line as its payload, asking
git-for-each-ref for its %(body) element accessed a NULL pointer.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodiff --check: do not get confused by new blank lines in the middle
Junio C Hamano [Wed, 20 Aug 2008 18:47:55 +0000 (11:47 -0700)]
diff --check: do not get confused by new blank lines in the middle

The code remembered that the last diff output it saw was an empty line,
and tried to reset that state whenever it sees a context line, a non-blank
new line, or a new hunk.  However, this codepath asks the underlying diff
engine to feed diff without any context, and the "just saw an empty line"
state was not reset if you added a new blank line in the last hunk of your
patch, even if it is not the last line of the file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoBuild-in "git-shell"
Junio C Hamano [Wed, 20 Aug 2008 01:05:43 +0000 (18:05 -0700)]
Build-in "git-shell"

This trivially makes "git-shell" a built-in.  It makes the executable even
fatter, though.

And MinGW removed git-shell only because of the funny dependencies; there
is no reason to do so anymore.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tested-on-MinGW-by: Johannes Sixt <johannes.sixt@telecom.at>
16 years agoMerge branch 'bd/diff-strbuf'
Junio C Hamano [Wed, 20 Aug 2008 04:43:40 +0000 (21:43 -0700)]
Merge branch 'bd/diff-strbuf'

* bd/diff-strbuf:
  xdiff-interface: hide the whole "xdiff_emit_state" business from the caller
  Use strbuf for struct xdiff_emit_state's remainder
  Make xdi_diff_outf interface for running xdiff_outf diffs

16 years agoMerge branch 'dp/hash-literally'
Junio C Hamano [Wed, 20 Aug 2008 04:43:25 +0000 (21:43 -0700)]
Merge branch 'dp/hash-literally'

* dp/hash-literally:
  add --no-filters option to git hash-object
  add --path option to git hash-object
  use parse_options() in git hash-object
  correct usage help string for git-hash-object
  correct argument checking test for git hash-object
  teach index_fd to work with pipes

16 years agoMerge branch 'js/checkout-dwim-local'
Junio C Hamano [Wed, 20 Aug 2008 04:43:04 +0000 (21:43 -0700)]
Merge branch 'js/checkout-dwim-local'

* js/checkout-dwim-local:
  checkout --track: make up a sensible branch name if '-b' was omitted

16 years agoMerge branch 'ph/enable-threaded'
Junio C Hamano [Wed, 20 Aug 2008 04:43:01 +0000 (21:43 -0700)]
Merge branch 'ph/enable-threaded'

* ph/enable-threaded:
  Enable threaded delta search on *BSD and Linux.

16 years agoMerge branch 'jk/pager-swap'
Junio C Hamano [Wed, 20 Aug 2008 04:42:55 +0000 (21:42 -0700)]
Merge branch 'jk/pager-swap'

* jk/pager-swap:
  spawn pager via run_command interface
  run-command: add pre-exec callback

16 years agoMerge branch 'rs/imap'
Junio C Hamano [Wed, 20 Aug 2008 04:42:46 +0000 (21:42 -0700)]
Merge branch 'rs/imap'

* rs/imap:
  Documentation: Improve documentation for git-imap-send(1)
  imap-send.c: more style fixes
  imap-send.c: style fixes
  git-imap-send: Support SSL
  git-imap-send: Allow the program to be run from subdirectories of a git tree

16 years agoMerge branch 'js/mingw-stat'
Junio C Hamano [Wed, 20 Aug 2008 04:25:48 +0000 (21:25 -0700)]
Merge branch 'js/mingw-stat'

* js/mingw-stat:
  Revert "Windows: Use a customized struct stat that also has the st_blocks member."
  compat: introduce on_disk_bytes()

16 years agoremote.c: remove useless if-before-free test
Jim Meyering [Tue, 19 Aug 2008 18:46:30 +0000 (20:46 +0200)]
remote.c: remove useless if-before-free test

We removed a handful of these useless if-before-free tests several months
ago.  This change removes a new one that snuck back in.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agomailinfo: avoid violating strbuf assertion
Jeff King [Tue, 19 Aug 2008 17:28:24 +0000 (13:28 -0400)]
mailinfo: avoid violating strbuf assertion

In handle_from, we calculate the end boundary of a section
to remove from a strbuf using strcspn like this:

  el = strcspn(buf, set_of_end_boundaries);
  strbuf_remove(&sb, start, el + 1);

This works fine if "el" is the offset of the boundary
character, meaning we remove up to and including that
character. But if the end boundary didn't match (that is, we
hit the end of the string as the boundary instead) then we
want just "el". Asking for "el+1" caught an out-of-bounds
assertion in the strbuf library.

This manifested itself when we got a 'From' header that had
just an email address with nothing else in it (the end of
the string was the end of the address, rather than, e.g., a
trailing '>' character), causing git-mailinfo to barf.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoreword --full-index description
Jim Meyering [Wed, 2 Jul 2008 07:49:59 +0000 (09:49 +0200)]
reword --full-index description

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoSubmittingPatches: fix a typo
Jim Meyering [Tue, 1 Apr 2008 12:53:51 +0000 (14:53 +0200)]
SubmittingPatches: fix a typo

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoadd boolean diff.suppress-blank-empty config option
Jim Meyering [Fri, 15 Aug 2008 11:39:26 +0000 (13:39 +0200)]
add boolean diff.suppress-blank-empty config option

GNU diff's --suppress-blank-empty option makes it so that diff no
longer outputs trailing white space unless the input data has it.
With this option, empty context lines are now empty also in diff -u output.
Before, they would have a single trailing space.

 * diff.c (diff_suppress_blank_empty): New global.
   (git_diff_basic_config): Set it.
   (fn_out_consume): Honor it.
 * t/t4029-diff-trailing-space.sh: New file.
 * Documentation/config.txt: Document it.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit format-patch: avoid underrun when format.headers is empty or all NLs
Jim Meyering [Tue, 19 Aug 2008 18:42:04 +0000 (20:42 +0200)]
git format-patch: avoid underrun when format.headers is empty or all NLs

* builtin-log.c (add_header): Avoid a buffer underrun when
format.headers is empty or all newlines.  Reproduce with this:
git config format.headers '' && git format-patch -1

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoshell: do not play duplicated definition games to shrink the executable
Junio C Hamano [Wed, 20 Aug 2008 01:05:39 +0000 (18:05 -0700)]
shell: do not play duplicated definition games to shrink the executable

Playing with linker games to shrink git-shell did not go well with various
other platforms and compilers.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Tue, 19 Aug 2008 07:40:53 +0000 (00:40 -0700)]
Merge branch 'maint'

* maint:
  t1002-read-tree-m-u-2way.sh: use 'git diff -U0' rather than 'diff -U0'
  adapt git-cvsserver manpage to dash-free syntax
  mailinfo: re-fix MIME multipart boundary parsing