gitweb.git
git-repack: do not do complex redundancy check.Junio C Hamano Sat, 19 Nov 2005 20:13:53 +0000 (12:13 -0800)

git-repack: do not do complex redundancy check.

With "-a", redundant pack removal is trivial, and otherwise
redundant pack removal is pointless; do not call
git-redundant-pack from this script.

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

git-count-objects: dc replacementJunio C Hamano Sat, 19 Nov 2005 10:54:07 +0000 (02:54 -0800)

git-count-objects: dc replacement

Johannes suggested this earlier but I did not take it so
seriously because this command is not that important. But this
probably matters on Cygwin which does not seem to come with
precompiled dc. It is a mystery for me that anything that
mimics UNIX does not offer a dc, though.

I did the detection for the lack of dc command a bit differently
from the verison Johannes did.

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

gitk: moving all three panes if clicking on an arrow.Stefan-W. Hahn Sat, 5 Nov 2005 19:55:29 +0000 (20:55 +0100)

gitk: moving all three panes if clicking on an arrow.

Signed-off-by: Stefan-W. Hahn <stefan.hahn@s-hahn.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitk: use git-diff-tree --no-commit-idPavel Roskin Fri, 11 Nov 2005 15:09:12 +0000 (10:09 -0500)

gitk: use git-diff-tree --no-commit-id

gitk switched to use git-diff-tree with one argument in gettreediffs and
getblobdiffs. git-diff-tree with one argument outputs commit ID in from
of the patch. This causes an empty line after "Comments" in the lower
right pane. Also, the diff in the lower left pane has the commit ID,
which is useless there.

This patch makes git use the newly added -no-commit-id option for
git-diff-tree to suppress commit ID. It also removes the p variable in
both functions, since it has become useless after switching to the
one-argument invocation for git-diff-tree.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitk: Specify line hover fontFrank Sorenson Sun, 30 Oct 2005 09:06:46 +0000 (02:06 -0700)

gitk: Specify line hover font

Hovering over a line in gitk displays the commit one-liner in a
box, but the text usually overflows the box. The box size is
computed with a specified font, so this patch sets the text font
as well.

Signed-off-by: Frank Sorenson <frank@tuxrocks.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

readrefs: grab all refs with one call to ls-remote.Junio C Hamano Sat, 19 Nov 2005 07:54:17 +0000 (23:54 -0800)

readrefs: grab all refs with one call to ls-remote.

Instead of reading refs/heads/* and refs/tags/* files ourselves
and missing files in subdirectories of heads/ and tags/, use
ls-remote on local repository and grab all of them. This lets us
also remove the procedure readotherrefs.

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

Merge http://www.kernel.org/pub/scm/gitk/gitkJunio C Hamano Sat, 19 Nov 2005 01:43:38 +0000 (17:43 -0800)

Merge http://www.kernel.org/pub/scm/gitk/gitk

Merge branches 'jc/branch' and 'jc/rebase'Junio C Hamano Fri, 18 Nov 2005 23:54:23 +0000 (15:54 -0800)

Merge branches 'jc/branch' and 'jc/rebase'

Rewrite rebase to use git-format-patch piped to git-am.Junio C Hamano Mon, 14 Nov 2005 08:41:53 +0000 (00:41 -0800)

Rewrite rebase to use git-format-patch piped to git-am.

The current rebase implementation finds commits in our tree but
not in the upstream tree using git-cherry, and tries to apply
them using git-cherry-pick (i.e. always use 3-way) one by one.

Which is fine, but when some of the changes do not apply
cleanly, it punts, and punts badly.

Suppose you have commits A-B-C-D-E since you forked from the
upstream and submitted the changes for inclusion. You fetch
from upstream head U and find that B has been picked up. You
run git-rebase to update your branch, which tries to apply
changes contained in A-C-D-E, in this order, but replaying of C
fails, because the upstream got changes that touch the same area
from elsewhere.

Now what?

It notes that fact, and goes ahead to apply D and E, and at the
very end tells you to deal with C by hand. Even if you somehow
managed to replay C on top of the result, you would now end up
with ...-B-...-U-A-D-E-C.

Breaking the order between B and others was the conscious
decision made by the upstream, so we would not worry about it,
and even if it were worrisome, it is too late for us to fix now.
What D and E do may well depend on having C applied before them,
which is a problem for us.

This rewrites rebase to use git-format-patch piped to git-am,
and when the patch does not apply, have git-am fall back on
3-way merge. The updated diff/patch pair knows how to apply
trivial binary patches as long as the pre- and post-images are
locally available, so this should work on a repository with
binary files as well.

The primary benefit of this change is that it makes rebase
easier to use when some of the changes do not replay cleanly.
In the "unapplicable patch in the middle" case, this "rebase"
works like this:

- A series of patches in e-mail form is created that records
what A-C-D-E do, and is fed to git-am. This is stored in
.dotest/ directory, just like the case you tried to apply
them from your mailbox. Your branch is rewound to the tip of
upstream U, and the original head is kept in .git/ORIG_HEAD,
so you could "git reset --hard ORIG_HEAD" in case the end
result is really messy.

- Patch A applies cleanly. This could either be a clean patch
application on top of rewound head (i.e. same as upstream
head), or git-am might have internally fell back on 3-way
(i.e. it would have done the same thing as git-cherry-pick).
In either case, a rebased commit A is made on top of U.

- Patch C does not apply. git-am stops here, with conflicts to
be resolved in the working tree. Yet-to-be-applied D and E
are still kept in .dotest/ directory at this point. What the
user does is exactly the same as fixing up unapplicable patch
when running git-am:

- Resolve conflict just like any merge conflicts.
- "git am --resolved --3way" to continue applying the patches.

- This applies the fixed-up patch so by definition it had
better apply. "git am" knows the patch after the fixed-up
one is D and then E; it applies them, and you will get the
changes from A-C-D-E commits on top of U, in this order.

I've been using this without noticing any problem, and as people
may know I do a lot of rebases.

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

git-branch: -f to forcibly reset branch head.Junio C Hamano Fri, 11 Nov 2005 19:12:50 +0000 (11:12 -0800)

git-branch: -f to forcibly reset branch head.

A new usage, 'git-branch -f branch [start]', resets the branch head at
start (or current head). Should be considered a dangerous operation,
but if you are like me to keep rewinding branches it is handy.

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

Do not show .exe in git command list.Junio C Hamano Fri, 18 Nov 2005 23:40:22 +0000 (15:40 -0800)

Do not show .exe in git command list.

Truncate the result from readdir() in the exec-path if they end
with .exe, to make it a bit more readable on Cygwin.

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

Document the "ignore objects" feature of git-pack-redundantLukas Sandström Fri, 18 Nov 2005 22:20:15 +0000 (23:20 +0100)

Document the "ignore objects" feature of git-pack-redundant

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Improve the readability of git-pack-redundantLukas Sandström Fri, 18 Nov 2005 22:00:55 +0000 (23:00 +0100)

Improve the readability of git-pack-redundant

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Remove all old packfiles when doing "git repack -a -d"Lukas Sandström Fri, 18 Nov 2005 20:36:12 +0000 (21:36 +0100)

Remove all old packfiles when doing "git repack -a -d"

No point in running git-pack-redundant if we already know
which packs are redundant.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Update pull/fetch --tags documentationLuck, Tony Fri, 18 Nov 2005 22:04:58 +0000 (14:04 -0800)

Update pull/fetch --tags documentation

When fetching/pulling from a remote repository the "--tags" option
can be used to pull tags too. Document that it will limit the pull
to only commits reachable from the tags.

Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix a bug in get_all_permutations.Lukas Sandström Fri, 18 Nov 2005 21:53:24 +0000 (22:53 +0100)

Fix a bug in get_all_permutations.

This line was missing in the previous patch for some reason.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Cygwin *might* be helped with NO_MMAPJunio C Hamano Thu, 17 Nov 2005 19:29:47 +0000 (11:29 -0800)

Cygwin *might* be helped with NO_MMAP

When HPA added Cygwin target, it ran just fine without NO_MMAP for him,
but recently we are getting reports that for some people things break
without it. For now, just suggest it in the Makefile without actually
updating the default.

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

Teach "approxidate" about weekday syntaxLinus Torvalds Fri, 18 Nov 2005 16:56:40 +0000 (08:56 -0800)

Teach "approxidate" about weekday syntax

On Fri, 18 Nov 2005, David Roundy wrote:
>
> Don't forget "high noon"! (and perhaps "tea time"?) :)

Done.

[torvalds@g5 git]$ ./test-date "now" "midnight" "high noon" "tea-time"
now -> bad -> Wed Dec 31 16:00:00 1969
now -> Fri Nov 18 08:50:54 2005

midnight -> bad -> Wed Dec 31 16:00:00 1969
midnight -> Fri Nov 18 00:00:00 2005

high noon -> bad -> Wed Dec 31 16:00:00 1969
high noon -> Thu Nov 17 12:00:00 2005

tea-time -> bad -> Wed Dec 31 16:00:00 1969
tea-time -> Thu Nov 17 17:00:00 2005

Thanks for pointing out tea-time.

This is also written to easily extended to allow people to add their own
important dates like Christmas and their own birthdays.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make "git fetch" less verbose by defaultLinus Torvalds Fri, 18 Nov 2005 16:31:55 +0000 (08:31 -0800)

Make "git fetch" less verbose by default

When doing something like

git fetch --tags origin

the excessively verbose output of git fetch makes the result totally
unreadable. It's impossible to tell if it actually fetched anything new or
not, since the screen will fill up with an endless supply of

...
* committish: 9165ec17fde255a1770886189359897dbb541012
tag 'v0.99.7c' of master.kernel.org:/pub/scm/git/git
* refs/tags/v0.99.7c: same as tag 'v0.99.7c' of master.kernel.org:/pub/scm/git/git
...

and any new tags that got fetched will be totally hidden.

So add a new "--verbose" flag to "git fetch" to enable this verbose mode,
but make the default be quiet.

NOTE! The quiet mode will still report about new or changed heads, so if
you are really fetching a new head, you'll see something like this:

[torvalds@g5 git]$ git fetch --tags parent
Packing 6 objects
Unpacking 6 objects
100% (6/6) done
* refs/tags/v1.0rc2: storing tag 'v1.0rc2' of master.kernel.org:/pub/scm/git/git
* refs/tags/v1.0rc3: storing tag 'v1.0rc3' of master.kernel.org:/pub/scm/git/git
* refs/tags/v1.0rc1: storing tag 'v1.0rc1' of master.kernel.org:/pub/scm/git/git

which actually tells you something useful that isn't hidden by all the
useless crud that you already had.

Extensively tested (hey, for me, this _is_ extensive) by doing a

rm .git/refs/tags/v1.0rc*

and re-fetching with both --verbose and without.

NOTE! This means that if the fetch didn't actually fetch anything at all,
git fetch will be totally quiet. I think that's much better than being so
verbose that you can't even tell whether something was fetched or not, but
some people might prefer to get a "nothing to fetch" message in that case.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix bug introduced by the latest changes to git-pack... Lukas Sandström Fri, 18 Nov 2005 16:30:29 +0000 (17:30 +0100)

Fix bug introduced by the latest changes to git-pack-redundant

I forgot to initialize part of the pll struct when copying it.
Found by valgrind.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-prune: quote possibly empty $dryrun as parameter... Junio C Hamano Fri, 18 Nov 2005 19:15:40 +0000 (11:15 -0800)

git-prune: quote possibly empty $dryrun as parameter to test

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

git-am: --binary; document --resume and --binary.Junio C Hamano Thu, 17 Nov 2005 00:46:24 +0000 (16:46 -0800)

git-am: --binary; document --resume and --binary.

Now git-apply can grok binary replacement patches, give --binary
flag to git-am. As a safety measure, this is not by default
enabled, so that you do not let malicious e-mailed patch to
replace an arbitrary path with just a couple of lines (diff
index lines, the filename and string "Binary files "...) by
accident.

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

Teach "approxidate" about weekday syntaxLinus Torvalds Thu, 17 Nov 2005 20:36:30 +0000 (12:36 -0800)

Teach "approxidate" about weekday syntax

This allows people to use syntax like "last thursday" for the approxidate.

(Or, indeed, more complex "three thursdays ago", but I suspect that would
be pretty unusual).

NOTE! The parsing is strictly sequential, so if you do

"one day before last thursday"

it will _not_ do what you think it does. It will take the current time,
subtract one day, and then go back to the thursday before that. So to get
what you want, you'd have to write it the other way around:

"last thursday and one day before"

which is insane (it's usually the same as "last wednesday" _except_ if
today is Thursday, in which case "last wednesday" is yesterday, and "last
thursday and one day before" is eight days ago).

Similarly,

"last thursday one month ago"

will first go back to last thursday, and then go back one month from
there, not the other way around.

I doubt anybody would ever use insane dates like that, but I thought I'd
point out that the approxidate parsing is not exactly "standard English".

Side note 2: if you want to avoid spaces (because of quoting issues), you
can use any non-alphanumberic character instead. So

git log --since=2.days.ago

works without any quotes.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make git-pack-redundant non-horribly slow on large... Lukas Sandström Thu, 17 Nov 2005 13:11:56 +0000 (14:11 +0100)

Make git-pack-redundant non-horribly slow on large sets of packs

Change the smallest-set detection algortithm so that when
we have found a good set, we don't check any larger sets.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-repack: Fix variable nameRalf Baechle Thu, 17 Nov 2005 14:34:47 +0000 (14:34 +0000)

git-repack: Fix variable name

Three times remove_redandant -> remove_redundant.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

'make clean' forgot about some filesNicolas Pitre Thu, 17 Nov 2005 15:40:22 +0000 (10:40 -0500)

'make clean' forgot about some files

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

Deal with binary diff output from GNU diff 2.8.7Junio C Hamano Fri, 18 Nov 2005 04:46:29 +0000 (20:46 -0800)

Deal with binary diff output from GNU diff 2.8.7

Some vintage of diff says just "Files X and Y differ\n", instead
of "Binary files X and Y differ\n", so catch both patterns.

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

Merge branch 'tojunio' of locke.catalyst.net.nz/git... Junio C Hamano Thu, 17 Nov 2005 10:00:25 +0000 (02:00 -0800)

Merge branch 'tojunio' of locke.catalyst.net.nz/git/git-martinlanghoff

archimport: allow for old style branch and public tag... Martin Langhoff Thu, 17 Nov 2005 08:20:45 +0000 (21:20 +1300)

archimport: allow for old style branch and public tag names

This patch adds the -o switch, which lets old trees tracked by
git-archmirror continue working with their old branch and tag names
to make life easier for people tracking your tree.

Private tags that are only used internally by git-archimport continue to be
new-style, and automatically converted upon first run.

[ ml: rebased to skip import overhaul ]

Signed-off-by:: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>

Add approxidate test calls.Junio C Hamano Tue, 15 Nov 2005 08:07:04 +0000 (00:07 -0800)

Add approxidate test calls.

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

git's rev-parse.c function show_datestring presumes... Linus Torvalds Tue, 15 Nov 2005 03:29:06 +0000 (19:29 -0800)

git's rev-parse.c function show_datestring presumes gnu date

Ok. This is the insane patch to do this.

It really isn't very careful, and the reason I call it "approxidate()"
will become obvious when you look at the code. It is very liberal in what
it accepts, to the point where sometimes the results may not make a whole
lot of sense.

It accepts "last week" as a date string, by virtue of "last" parsing as
the number 1, and it totally ignoring superfluous fluff like "ago", so
"last week" ends up being exactly the same thing as "1 week ago". Fine so
far.

It has strange side effects: "last december" will actually parse as "Dec
1", which actually _does_ turn out right, because it will then notice that
it's not December yet, so it will decide that you must be talking about a
date last year. So it actually gets it right, but it's kind of for the
"wrong" reasons.

It also accepts the numbers 1..10 in string format ("one" .. "ten"), so
you can do "ten weeks ago" or "ten hours ago" and it will do the right
thing.

But it will do some really strange thigns too: the string "this will last
forever", will not recognize anyting but "last", which is recognized as
"1", which since it doesn't understand anything else it will think is the
day of the month. So if you do

gitk --since="this will last forever"

the date will actually parse as the first day of the current month.

And it will parse the string "now" as "now", but only because it doesn't
understand it at all, and it makes everything relative to "now".

Similarly, it doesn't actually parse the "ago" or "from now", so "2 weeks
ago" is exactly the same as "2 weeks from now". It's the current date
minus 14 days.

But hey, it's probably better (and certainly faster) than depending on GNU
date. So now you can portably do things like

gitk --since="two weeks and three days ago"
git log --since="July 5"
git-whatchanged --since="10 hours ago"
git log --since="last october"

and it will actually do exactly what you thought it would do (I think). It
will count 17 days backwards, and it will do so even if you don't have GNU
date installed.

(I don't do "last monday" or similar yet, but I can extend it to that too
if people want).

It was kind of fun trying to write code that uses such totally relaxed
"understanding" of dates yet tries to get it right for the trivial cases.
The result should be mixed with a few strange preprocessor tricks, and be
submitted for the IOCCC ;)

Feel free to try it out, and see how many strange dates it gets right. Or
wrong.

And if you find some interesting (and valid - not "interesting" as in
"strange", but "interesting" as in "I'd be interested in actually doing
this) thing it gets wrong - usually by not understanding it and silently
just doing some strange things - please holler.

Now, as usual this certainly hasn't been getting a lot of testing. But my
code always works, no?

Linus

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

Disambiguate the term 'branch' in Arch vs gitEric Wong Sat, 12 Nov 2005 09:29:20 +0000 (01:29 -0800)

Disambiguate the term 'branch' in Arch vs git

Disambiguate the term 'branch' in Arch vs git,
and start using fully-qualified names.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>

archimport: don't die on merge-base failureEric Wong Sat, 12 Nov 2005 09:27:21 +0000 (01:27 -0800)

archimport: don't die on merge-base failure

Don't die if we can't find a merge base, Arch allows arbitrary
cherry-picks between unrelated branches and we should not
die when that happens

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>

remove shellquote usage for tagsEric Wong Sat, 12 Nov 2005 09:25:33 +0000 (01:25 -0800)

remove shellquote usage for tags

use ',' to encode '/' in "archivename/foo--bar--0.0" so we can allow
"--branch"-less trees which are valid in Arch ("archivename/foo--0.0")

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>

daemon.c: fix arg parsing bugsAndreas Ericsson Wed, 16 Nov 2005 23:38:29 +0000 (00:38 +0100)

daemon.c: fix arg parsing bugs

Allow --init-timeout and --timeout to be specified without falling
through to usage().

Make sure openlog() is called even if implied by --inetd, or messages
will be sent to wherever LOG_USER ends up.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

tests: binary diff application.Junio C Hamano Wed, 16 Nov 2005 23:52:45 +0000 (15:52 -0800)

tests: binary diff application.

This adds more tests to cover cases where binary diff
application succeeds.

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

diff: --full-indexJunio C Hamano Tue, 15 Nov 2005 01:53:22 +0000 (17:53 -0800)

diff: --full-index

A new option, --full-index, is introduced to diff family. This
causes the full object name of pre- and post-images to appear on
the index line of patch formatted output, to be used in
conjunction with --allow-binary-replacement option of git-apply.

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

apply: allow-binary-replacement.Junio C Hamano Tue, 15 Nov 2005 01:37:05 +0000 (17:37 -0800)

apply: allow-binary-replacement.

A new option, --allow-binary-replacement, is introduced.

When you feed a diff that records full SHA1 name of pre- and
post-image blob on its index line to git-apply with this option,
the post-image blob replaces the path if what you have in the
working tree matches the pre-image _and_ post-image blob is
already available in the object directory.

Later we _might_ want to enhance the diff output to also include
the full binary data of the post-image, to make this more
useful, but this is good enough for local rebasing application.

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

git-am: --resolved.Junio C Hamano Wed, 16 Nov 2005 08:19:32 +0000 (00:19 -0800)

git-am: --resolved.

After failed patch application, you can manually apply the patch
(this includes resolving the conflicted merge after git-am falls
back to 3-way merge) and run git-update-index on necessary paths
to prepare the index file in a shape a successful patch
application should have produced. Then re-running git-am --resolved
would record the resulting index file along with the commit log
information taken from the patch e-mail.

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

git-apply: fail if a patch cannot be applied.Junio C Hamano Wed, 16 Nov 2005 22:12:56 +0000 (14:12 -0800)

git-apply: fail if a patch cannot be applied.

Recently we fixed 'git-apply --stat' not to barf on a binary
differences. But it accidentally broke the error detection when
we actually attempt to apply them.

This commit fixes the problem and adds test cases.

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

git-cvsexportcommit.perl: fix typos in outputKevin Geiss Mon, 14 Nov 2005 16:43:51 +0000 (09:43 -0700)

git-cvsexportcommit.perl: fix typos in output

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

git-cvsexportcommit.perl: exit with non-0 status if... Kevin Geiss Mon, 14 Nov 2005 16:42:36 +0000 (09:42 -0700)

git-cvsexportcommit.perl: exit with non-0 status if patch fails.

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

git-cvsexportcommit.perl: use getopts to get binary... Kevin Geiss Mon, 14 Nov 2005 16:41:43 +0000 (09:41 -0700)

git-cvsexportcommit.perl: use getopts to get binary flags

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

git-cvsexportcommit.perl: Fix usage() output.Kevin Geiss Mon, 14 Nov 2005 16:45:05 +0000 (09:45 -0700)

git-cvsexportcommit.perl: Fix usage() output.

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

Documentation/git-log.txt: trivial typo fix.Alecs King Wed, 16 Nov 2005 19:06:03 +0000 (03:06 +0800)

Documentation/git-log.txt: trivial typo fix.

Signed-off-by: Alecs King <alecsk@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

symref support for import scriptsPavel Roskin Wed, 16 Nov 2005 18:27:28 +0000 (13:27 -0500)

symref support for import scripts

Fix git import script not to assume that .git/HEAD is a symlink.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Disallow empty pattern in "git grep"Linus Torvalds Wed, 16 Nov 2005 17:38:46 +0000 (09:38 -0800)

Disallow empty pattern in "git grep"

For some reason I've done a "git grep" twice with no pattern, which is
really irritating, since it just grep everything. If I actually wanted
that, I could do "git grep ^" or something.

So add a "usage" message if the pattern is empty.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git wrapper: basic fixes.Junio C Hamano Wed, 16 Nov 2005 07:13:30 +0000 (23:13 -0800)

git wrapper: basic fixes.

Updates to fix the nits found during the list discussion.

- Lose PATH_TO_MAN; just rely on execlp() to find whereever the
"man" command is installed.

- Do not randomly chdir(), but concatenate to the current
working directory only if the given path is not absolute.

- Lose use of glob(); read from exec_path and do sorting
ourselves -- it is not that much more work.

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

Give python a chance to find "backported" modulesJohannes Schindelin Wed, 16 Nov 2005 02:33:44 +0000 (03:33 +0100)

Give python a chance to find "backported" modules

python 2.2.1 is perfectly capable of executing git-merge-recursive,
provided that it finds heapq and sets. All you have to do is to steal
heapq.py and sets.py from python 2.3 or newer, and drop them in your
GIT_PYTHON_PATH.

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

Fix tests with new git in CJohannes Schindelin Wed, 16 Nov 2005 01:44:50 +0000 (02:44 +0100)

Fix tests with new git in C

GIT_EXEC_PATH *has* to be set.

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

Fix llist_sorted_difference_inplace in git-pack-redundantLukas Sandström Tue, 15 Nov 2005 21:24:02 +0000 (22:24 +0100)

Fix llist_sorted_difference_inplace in git-pack-redundant

Simplify and actually make llist_sorted_difference_inplace work
by using llist_sorted_remove instead of duplicating parts of the
code.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git --help COMMAND brings up the git-COMMAND man-page.Andreas Ericsson Tue, 15 Nov 2005 23:31:25 +0000 (00:31 +0100)

git --help COMMAND brings up the git-COMMAND man-page.

It's by design a bit stupid (matching ^git rather than ^git-), so as
to work with 'gitk' and 'git' as well.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Update git(7) man-page for the C wrapper.Andreas Ericsson Tue, 15 Nov 2005 23:31:25 +0000 (00:31 +0100)

Update git(7) man-page for the C wrapper.

The program 'git' now has --exec-path which needs explaining.

Renamed old "DESCRIPTION" to "CORE GIT COMMANDS" to make room for
"OPTIONS" while following follow some sort of convention.

Also updated AUTHORS section to pat my own back a bit.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

C implementation of the 'git' program, take two.Andreas Ericsson Tue, 15 Nov 2005 23:31:25 +0000 (00:31 +0100)

C implementation of the 'git' program, take two.

This patch provides a C implementation of the 'git' program and
introduces support for putting the git-* commands in a directory
of their own. It also saves some time on executing those commands
in a tight loop and it prints the currently available git commands
in a nicely formatted list.

The location of the GIT_EXEC_PATH (name discussion's closed, thank gods)
can be obtained by running

git --exec-path

which will hopefully give porcelainistas ample time to adapt their
heavy-duty loops to call the core programs directly and thus save
the extra fork() / execve() overhead, although that's not really
necessary any more.

The --exec-path value is prepended to $PATH, so the git-* programs
should Just Work without ever requiring any changes to how they call
other programs in the suite.

Some timing values for 10000 invocations of git-var >&/dev/null:
git.sh: 24.194s
git.c: 9.044s
git-var: 7.377s

The git-<tab><tab> behaviour can, along with the someday-to-be-deprecated
git-<command> form of invocation, be indefinitely retained by adding
the following line to one's .bash_profile or equivalent:

PATH=$PATH:$(git --exec-path)

Experimental libraries can be used by either setting the environment variable
GIT_EXEC_PATH, or by using

git --exec-path=/some/experimental/exec-path

Relative paths are properly grok'ed as exec-path values.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

sha1_file.c::add_packed_git(): fix type mismatch.Junio C Hamano Tue, 15 Nov 2005 20:51:02 +0000 (12:51 -0800)

sha1_file.c::add_packed_git(): fix type mismatch.

An object name is 20-byte 'unsigned char', not 'char'.

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

diff: make default rename detection limit configurable.Junio C Hamano Tue, 15 Nov 2005 20:48:08 +0000 (12:48 -0800)

diff: make default rename detection limit configurable.

A while ago, a rename-detection limit logic was implemented as a
response to this thread:

http://marc.theaimsgroup.com/?l=git&m=112413080630175

where gitweb was found to be using a lot of time and memory to
detect renames on huge commits. git-diff family takes -l<num>
flag, and if the number of paths that are rename destination
candidates (i.e. new paths with -M, or modified paths with -C)
are larger than that number, skips rename/copy detection even
when -M or -C is specified on the command line.

This commit makes the rename detection limit easier to use. You
can have:

[diff]
renamelimit = 30

in your .git/config file to specify the default rename detection
limit. You can override this from the command line; giving 0
means 'unlimited':

git diff -M -l0

We might want to change the default behaviour, when you do not
have the configuration, to limit it to say 20 paths or so. This
would also help the diffstat generation after a big 'git pull'.

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

Add config variable core.symrefsonlyJohannes Schindelin Tue, 15 Nov 2005 18:24:19 +0000 (19:24 +0100)

Add config variable core.symrefsonly

This allows you to force git to avoid symlinks for refs. Just add
something like

[core]
symrefsonly = true

to .git/config.

Don´t forget to "git checkout your_branch", or it does not do anything...

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

Rework object refs tracking to reduce memory usageSergey Vlasov Tue, 15 Nov 2005 16:08:08 +0000 (19:08 +0300)

Rework object refs tracking to reduce memory usage

Store pointers to referenced objects in a variable sized array instead
of linked list. This cuts down memory usage of utilities which use
object references; e.g., git-fsck-objects --full on the git.git
repository consumes about 2 MB of memory tracked by Massif instead of
7 MB before the change. Object refs are still the biggest consumer of
memory (57%), but the malloc overhead for a single block instead of a
linked list is substantially smaller.

Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-fsck-objects: Free tree entries after useSergey Vlasov Tue, 15 Nov 2005 16:07:15 +0000 (19:07 +0300)

git-fsck-objects: Free tree entries after use

The Massif tool of Valgrind revealed that parsed tree entries occupy
more than 60% of memory allocated by git-fsck-objects. These entries
can be freed immediately after use, which significantly decreases
memory consumption.

Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix git(1) link to git-index-packJonas Fonseca Tue, 15 Nov 2005 12:29:18 +0000 (13:29 +0100)

Fix git(1) link to git-index-pack

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: do not blindly run 'cat' .git/HEAD,... Junio C Hamano Tue, 15 Nov 2005 09:31:04 +0000 (01:31 -0800)

Documentation: do not blindly run 'cat' .git/HEAD, or echo into it.

Many places in the documentation we still talked about reading
what commit is recorded in .git/HEAD or writing the new head
information into it, both assuming .git/HEAD is a symlink. That
is not necessarily so.

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

Fix bunch of fd leaks in http-fetchPetr Baudis Fri, 11 Nov 2005 23:55:16 +0000 (00:55 +0100)

Fix bunch of fd leaks in http-fetch

The current http-fetch is rather careless about fd leakage, causing
problems while fetching large repositories. This patch does not reserve
exhaustiveness, but I covered everything I spotted. I also left some
safeguards in place in case I missed something, so that we get to know,
sooner or later.

Reported by Becky Bruce <becky.bruce@freescale.com>.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-daemon: --inetd implies --syslogAndreas Ericsson Mon, 14 Nov 2005 16:41:01 +0000 (17:41 +0100)

git-daemon: --inetd implies --syslog

Otherwise nothing is logged anywhere, which is a Bad Thing.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-core-foo -> git-foo, except the core packageH. Peter Anvin Tue, 15 Nov 2005 06:12:17 +0000 (22:12 -0800)

git-core-foo -> git-foo, except the core package

This patch renames the tarball "git" rather than "git-core", and changes
the names of various packages from git-core-foo to git-foo. git-core is
still the true core package; an empty RPM package named "git" pulls in
ALL the git packages -- this makes updates work correctly, and allows
"yum install git" to do the obvious thing.

It also renames the git-(core-)tk package to gitk.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Update topo-order test.Junio C Hamano Tue, 15 Nov 2005 02:15:30 +0000 (18:15 -0800)

Update topo-order test.

The recently we updated rev-list --topo-order to show the heads
in date order, but we had a test that expected to see the old
behaviour.

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

allow git-update-ref create refs with slashes in namesAlex Riesen Mon, 14 Nov 2005 22:10:59 +0000 (23:10 +0100)

allow git-update-ref create refs with slashes in names

Make git-update-ref create references with slashes in them. git-branch
and git-checkout already support such reference names.

git-branch can use git-update-ref to create the references in a more
formal manner now.

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

Documentation nitpickingNikolai Weibull Mon, 14 Nov 2005 23:20:01 +0000 (00:20 +0100)

Documentation nitpicking

This patch fixes some small problems with the documentation.

Signed-off-by: Nikolai Weibull <nikolai@bitwi.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Document a couple of missing command-line options.Nikolai Weibull Mon, 14 Nov 2005 23:20:01 +0000 (00:20 +0100)

Document a couple of missing command-line options.

This patch adds documentation to quite a few command-line options.

Signed-off-by: Nikolai Weibull <nikolai@bitwi.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Document the -n command-line option to git-unpack-objectsNikolai Weibull Mon, 14 Nov 2005 23:20:01 +0000 (00:20 +0100)

Document the -n command-line option to git-unpack-objects

This patch documents the -n command-line option to git-unpack-objects,
as it was previously undocumented.

Signed-off-by: Nikolai Weibull <nikolai@bitwi.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

apply: fix binary patch detection.Junio C Hamano Tue, 15 Nov 2005 01:15:07 +0000 (17:15 -0800)

apply: fix binary patch detection.

The comparison to find "Binary files " string was looking at a
wrong place when offset != 0.

Also, we may have the full 40-byte textual sha1 on the index
line; two off-by-one errors prevented it.

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

Add -r flag and some speedupsPaul Mackerras Mon, 14 Nov 2005 23:34:03 +0000 (10:34 +1100)

Add -r flag and some speedups

The -r flag means "rev-list order", i.e. just display the commits
in the order they come from git-rev-list.

The speedups include:
- don't process the whole commit line-by-line, only the header
- don't convert dates when reading the commits, rather do it when
needed
- don't do the $canv delete lines.$id in drawlines when drawing the
graph initially (it was taking a lot of the total time)
- cache the date conversion for each hour (more important with tk8.5,
since [clock format] is a lot slower in 8.5 than in 8.4).

Signed-off-by: Paul Mackerras <paulus@samba.org>

Fix git-rev-list "date order" with --topo-orderLinus Torvalds Mon, 14 Nov 2005 18:01:26 +0000 (10:01 -0800)

Fix git-rev-list "date order" with --topo-order

This fixes git-rev-list so that when there are multiple branches, we still
sort the heads in proper approximate date order even when sorting the
output topologically.

This makes things like

gitk --all -d

work sanely and show the branches in date order (where "date order" is
obviously modified by the paren-child dependency requirements of the
topological sort).

The trivial fix is to just build the "work" list in date order rather than
inserting the new work entries at the beginning.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-branch: Mention -d and -D in man-page.Andreas Ericsson Mon, 14 Nov 2005 16:53:42 +0000 (17:53 +0100)

git-branch: Mention -d and -D in man-page.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'svnup' of netz.smurf.noris.de/git/gitJunio C Hamano Mon, 14 Nov 2005 21:50:05 +0000 (13:50 -0800)

Merge branch 'svnup' of netz.smurf.noris.de/git/git

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

Depend on asciidoc 7 (at least).Matthias Urlichs Mon, 14 Nov 2005 16:41:31 +0000 (17:41 +0100)

Depend on asciidoc 7 (at least).

Remove git-rename. git-mv does the sameJosef Weidendorfer Sun, 13 Nov 2005 14:08:00 +0000 (15:08 +0100)

Remove git-rename. git-mv does the same

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

Bugfix: stop if directory already existsJosef Weidendorfer Sun, 13 Nov 2005 14:03:31 +0000 (15:03 +0100)

Bugfix: stop if directory already exists

Fix a typo: We do not want to run the directory as command,
and want to terminate if the directory exists
Additionally, update the usage message

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

Separate LDFLAGS and CFLAGS.Junio C Hamano Sun, 13 Nov 2005 09:46:13 +0000 (01:46 -0800)

Separate LDFLAGS and CFLAGS.

Stuffing -L flag and friends meant for the linking phase into
ALL_CFLAGS is not right; honor LDFLAGS and introduce ALL_LDFLAGS
to separate them out.

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

Merge branch 'svnup' of netz.smurf.noris.de/git/gitJunio C Hamano Mon, 14 Nov 2005 08:25:48 +0000 (00:25 -0800)

Merge branch 'svnup' of netz.smurf.noris.de/git/git

Remove trailing slashesMatthias Urlichs Mon, 14 Nov 2005 07:31:00 +0000 (08:31 +0100)

Remove trailing slashes

SVN dies a messy death when passed a path with trailing slashes.

Rename lost+found to lost-found.Junio C Hamano Sun, 13 Nov 2005 10:07:02 +0000 (02:07 -0800)

Rename lost+found to lost-found.

Because we use "lost-found" as the directory name to hold
dangling object names, it is confusing to call the command
git-lost+found, although it makes sense and is even cute ;-).

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

Fix compilation warnings in pack-redundant.cKai Ruemmler Sat, 12 Nov 2005 16:33:24 +0000 (17:33 +0100)

Fix compilation warnings in pack-redundant.c

This fixes compilation warnings where "%ld" was used to print values of
type size_t.

Signed-off-by: Kai Ruemmler <kai.ruemmler@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Debian: build-depend on libexpat-dev.Junio C Hamano Sun, 13 Nov 2005 09:57:33 +0000 (01:57 -0800)

Debian: build-depend on libexpat-dev.

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

Split gitk into seperate RPM packageThomas Matysik Sun, 13 Nov 2005 04:58:02 +0000 (17:58 +1300)

Split gitk into seperate RPM package

I don't want to have to install x11-libs and all it's dependencies on
my headless machines, so this patch splits gitk out of the RPM.

The .deb already appears to have gitk split out.

Signed-off-by: Thomas Matysik <thomas@matysik.co.nz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add expat and expat-devel dependencies (for http-push... Thomas Matysik Sun, 13 Nov 2005 04:56:55 +0000 (17:56 +1300)

Add expat and expat-devel dependencies (for http-push) to RPM spec.

Signed-off-by: Thomas Matysik <thomas@matysik.co.nz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix fd leak in http-fetchNick Hengeveld Sat, 12 Nov 2005 17:38:28 +0000 (09:38 -0800)

Fix fd leak in http-fetch

Added a call to finish_request to clean up resources if the server
returned a 404 and there are no alternates left to try.

Signed-off-by: Nick Hengeveld <nickh@reactrix.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix for multiple alternates requests in http-fetchNick Hengeveld Sat, 12 Nov 2005 17:11:32 +0000 (09:11 -0800)

Fix for multiple alternates requests in http-fetch

Stop additional alternates requests from starting if one is already in
progress. This adds an optional callback which is processed after a slot
has finished running.

Signed-off-by: Nick Hengeveld <nickh@reactrix.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

debian packaging: git-cvs needs cvspsMatthias Urlichs Sat, 12 Nov 2005 22:15:50 +0000 (23:15 +0100)

debian packaging: git-cvs needs cvsps

Ignore built git-lost+found.Junio C Hamano Sat, 12 Nov 2005 06:28:03 +0000 (22:28 -0800)

Ignore built git-lost+found.

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

Documentation: asciidoc sources are utf-8Junio C Hamano Sat, 12 Nov 2005 06:16:59 +0000 (22:16 -0800)

Documentation: asciidoc sources are utf-8

git-pack-redundant documentation was encoded in latin1, which caused
asciidoc to barf, which expected to see utf-8. Run tcs to re-encode
it in utf-8.

Also just for fun try my name in Japanese in git-lost+found
documentation ;-)

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

Rename .git/lost+found to .git/lost-found.Junio C Hamano Fri, 11 Nov 2005 03:16:26 +0000 (19:16 -0800)

Rename .git/lost+found to .git/lost-found.

Just to avoid confusion that scripts poorly written by somebody
else ;-) might mistake this as a mount point, or backup tools
ignoring the directory. The latter is probably not a big loss,
however, considering that this directory's contents are to be
used while fresh anyway.

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

git-lost+foundJunio C Hamano Mon, 7 Nov 2005 23:15:34 +0000 (15:15 -0800)

git-lost+found

This command helps you resurrect accidentally lost tags and commits.

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

git-prune: prune redundant packsJunio C Hamano Fri, 11 Nov 2005 18:41:53 +0000 (10:41 -0800)

git-prune: prune redundant packs

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

Make git-pack-redundant consider alt-odbsLukas_Sandström Fri, 11 Nov 2005 00:25:04 +0000 (01:25 +0100)

Make git-pack-redundant consider alt-odbs

This patch changes git-pack-redundant so that packfiles
in alternate object directories also are considered when
deciding which objects are redundant.

This functionality is controlled by the flag '--alt-odb'.

Also convert the other flags to the long form, and update
docs and git-repack accordingly.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Rename git-pack-intersect to git-pack-redundantLukas_Sandström Wed, 9 Nov 2005 23:16:13 +0000 (00:16 +0100)

Rename git-pack-intersect to git-pack-redundant

This patch renames git-pack-intersect to git-pack-redundant
as suggested by Petr Baudis. The new name reflects what the
program does, rather than how it does it.

Also fix a small argument parsing bug.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make git-repack use git-pack-intersect.Lukas_Sandström Wed, 9 Nov 2005 01:25:48 +0000 (02:25 +0100)

Make git-repack use git-pack-intersect.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add git-pack-intersect to .gitignoreLukas_Sandström Wed, 9 Nov 2005 01:24:51 +0000 (02:24 +0100)

Add git-pack-intersect to .gitignore

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add documentation for git-pack-intersectLukas_Sandström Wed, 9 Nov 2005 01:23:55 +0000 (02:23 +0100)

Add documentation for git-pack-intersect

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add git-pack-intersectLukas_Sandström Wed, 9 Nov 2005 01:22:40 +0000 (02:22 +0100)

Add git-pack-intersect

This patch adds the program git-pack-intersect. It is
used to find redundant packs in git repositories.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>

merge-one-file: use empty- or common-base condintionall... Junio C Hamano Fri, 11 Nov 2005 03:30:23 +0000 (19:30 -0800)

merge-one-file: use empty- or common-base condintionally in two-stage merge.

If two sides added the same path completely different thing, it is
easier to see the merge pivoting on /dev/null. So check the size of
the common section we have found, and empty it if it is too small.

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