gitweb.git
cvsserver: Reword documentation on necessity of write... Frank Lichtenheld Thu, 12 Apr 2007 14:43:36 +0000 (16:43 +0200)

cvsserver: Reword documentation on necessity of write access

Reworded the section about git-cvsserver needing to update the
database.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: Allow to "add" a removed fileFrank Lichtenheld Wed, 11 Apr 2007 22:51:33 +0000 (00:51 +0200)

cvsserver: Allow to "add" a removed file

CVS allows you to add a removed file (where the
removal is not yet committed) which will
cause the server to send the latest revision of the
file and to delete the "removed" status.

Copy this behaviour.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: --cherry-pickJunio C Hamano Tue, 10 Apr 2007 22:28:32 +0000 (15:28 -0700)

Documentation: --cherry-pick

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

git-log --cherry-pick A...BJunio C Hamano Mon, 9 Apr 2007 10:40:38 +0000 (03:40 -0700)

git-log --cherry-pick A...B

This is meant to be a saner replacement for "git-cherry".

When used with "A...B", this filters out commits whose patch
text has the same patch-id as a commit on the other side. It
would probably most useful to use with --left-right.

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

Refactor patch-id filtering out of git-cherry and git... Junio C Hamano Tue, 10 Apr 2007 00:01:27 +0000 (17:01 -0700)

Refactor patch-id filtering out of git-cherry and git-format-patch.

This implements the patch-id computation and recording library,
patch-ids.c, and rewrites the get_patch_ids() function used in
cherry and format-patch to use it, so that they do not pollute
the object namespace. Earlier code threw non-objects into the
in-core object database, and hoped for not getting bitten by
SHA-1 collisions. While it may be practically Ok, it still was
an ugly hack.

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

Add %m to '--pretty=format:'Junio C Hamano Mon, 9 Apr 2007 09:34:05 +0000 (02:34 -0700)

Add %m to '--pretty=format:'

When used with '--boundary A...B', this shows the -/</> marker
you would get with --left-right option to 'git-log' family.
When symmetric diff is not used, everybody is shown to be on the
"right" branch.

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

clean up add_object_entry()Nicolas Pitre Wed, 11 Apr 2007 02:54:36 +0000 (22:54 -0400)

clean up add_object_entry()

This function used to call locate_object_entry_hash() _twice_ per added
object while only once should suffice. Let's reorganize that code a bit.

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

tests for various pack index featuresNicolas Pitre Tue, 10 Apr 2007 20:26:10 +0000 (16:26 -0400)

tests for various pack index features

This is a fairly complete list of tests for various aspects of pack
index versions 1 and 2.

Tests on index v2 include 32-bit and 64-bit offsets, as well as a nice
demonstration of the flawed repacking integrity checks that index
version 2 intend to solve over index version 1 with the per object CRC.

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

use test-genrandom in tests instead of /dev/urandomNicolas Pitre Wed, 11 Apr 2007 17:35:13 +0000 (13:35 -0400)

use test-genrandom in tests instead of /dev/urandom

This way tests are completely deterministic and possibly more portable.

Signed-off-by: Nicolas Pitre <nico@cam.org>

simple random data generator for testsNicolas Pitre Wed, 11 Apr 2007 17:59:51 +0000 (13:59 -0400)

simple random data generator for tests

Reliance on /dev/urandom produces test vectors that are, well, random.
This can cause problems impossible to track down when the data is
different from one test invokation to another.

The goal is not to have random data to test, but rather to have a
convenient way to create sets of large files with non compressible and
non deltifiable data in a reproducible way.

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

sscanf/strtoul: parse integers robustlyJim Meyering Mon, 9 Apr 2007 23:01:44 +0000 (01:01 +0200)

sscanf/strtoul: parse integers robustly

* builtin-grep.c (strtoul_ui): Move function definition from here, to...
* git-compat-util.h (strtoul_ui): ...here, with an added "base" parameter.
* builtin-grep.c (cmd_grep): Update use of strtoul_ui to include base, "10".
* builtin-update-index.c (read_index_info): Diagnose an invalid mode integer
that is out of range or merely larger than INT_MAX.
(cmd_update_index): Use strtoul_ui, not sscanf.
* convert-objects.c (write_subdirectory): Likewise.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Teach directory traversal about subprojectsLinus Torvalds Wed, 11 Apr 2007 21:49:44 +0000 (14:49 -0700)

Teach directory traversal about subprojects

This is the promised cleaned-up version of teaching directory traversal
(ie the "read_directory()" logic) about subprojects. That makes "git add"
understand to add/update subprojects.

It now knows to look at the index file to see if a directory is marked as
a subproject, and use that as information as whether it should be recursed
into or not.

It also generally cleans up the handling of directory entries when
traversing the working tree, by splitting up the decision-making process
into small functions of their own, and adding a fair number of comments.

Finally, it teaches "add_file_to_cache()" that directory names can have
slashes at the end, since the directory traversal adds them to make the
difference between a file and a directory clear (it always did that, but
my previous too-ugly-to-apply subproject patch had a totally different
path for subproject directories and avoided the slash for that case).

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

Add testcase for format-patch --subject-prefix (take 3)Robin H. Johnson Wed, 11 Apr 2007 23:58:08 +0000 (16:58 -0700)

Add testcase for format-patch --subject-prefix (take 3)

Add testcase for format-patch --subject-prefix support.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add custom subject prefix support to format-patch ... Robin H. Johnson Wed, 11 Apr 2007 23:58:07 +0000 (16:58 -0700)

Add custom subject prefix support to format-patch (take 3)

Add a new option to git-format-patch, entitled --subject-prefix that allows
control of the subject prefix '[PATCH]'. Using this option, the text 'PATCH' is
replaced with whatever input is provided to the option. This allows easily
generating patches like '[PATCH 2.6.21-rc3]' or properly numbered series like
'[-mm3 PATCH N/M]'. This patch provides the implementation and documentation.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Thu, 12 Apr 2007 01:43:01 +0000 (18:43 -0700)

Merge branch 'maint'

* maint:
GIT 1.5.1.1
cvsserver: Fix handling of diappeared files on update
fsck: do not complain on detached HEAD.
(encode_85, decode_85): Mark source buffer pointer as "const".

Fix thinko in subproject entry sortingLinus Torvalds Wed, 11 Apr 2007 21:39:12 +0000 (14:39 -0700)

Fix thinko in subproject entry sorting

This fixes a total thinko in my original series: subprojects do *not* sort
like directories, because the index is sorted purely by full pathname, and
since a subproject shows up in the index as a normal NUL-terminated
string, it never has the issues with sorting with the '/' at the end.

So if you have a subproject "proj" and a file "proj.c", the subproject
sorts alphabetically before the file in the index (and must thus also sort
that way in a tree object, since trees sort as the index).

In contrast, it you have two files "proj/file" and "proj.c", the "proj.c"
will sort alphabetically before "proj/file" in the index. The index
itself, of course, does not actually contain an entry "proj/", but in the
*tree* that gets written out, the tree entry "proj" will sort after the
file entry "proj.c", which is the only real magic sorting rule.

In other words: the magic sorting rule only affects tree entries, and
*only* affects tree entries that point to other trees (ie are of the type
S_IFDIR).

Anyway, that thinko just means that we should remove the special case to
make S_ISDIRLNK entries sort like S_ISDIR entries. They don't. They sort
like normal files.

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

GIT 1.5.1.1 v1.5.1.1Junio C Hamano Wed, 11 Apr 2007 21:39:07 +0000 (14:39 -0700)

GIT 1.5.1.1

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

cvsserver: Fix handling of diappeared files on updateFrank Lichtenheld Wed, 11 Apr 2007 20:38:19 +0000 (22:38 +0200)

cvsserver: Fix handling of diappeared files on update

Only send a modified response if the client sent a
"Modified" entry. This fixes the case where the
file was locally deleted on the client without
being removed from CVS. In this case the client
will only have sent the Entry for the file but nothing
else.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Martin Langhoff <martin@catalyst.net.nz>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

fsck: do not complain on detached HEAD.Junio C Hamano Wed, 11 Apr 2007 08:28:43 +0000 (01:28 -0700)

fsck: do not complain on detached HEAD.

Detached HEAD is just a normal state of a repository. Do not
say anything about it.

Do not give worrying "error:" messages when we let the user know
that the HEAD points at nothing (i.e. yet to be born branch),
nor we do not have any default refs to start following the
objects chain. Reword them as "notice:".

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

(encode_85, decode_85): Mark source buffer pointer... Jim Meyering Mon, 9 Apr 2007 22:56:33 +0000 (00:56 +0200)

(encode_85, decode_85): Mark source buffer pointer as "const".

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Allow configuring the default projects order... Frank Lichtenheld Fri, 6 Apr 2007 21:58:24 +0000 (23:58 +0200)

gitweb: Allow configuring the default projects order and add order 'none'

Introduce new configuration variable $default_projects_order
that can be used to specify the default order of projects on
the index page if no 'o' parameter is given.

Allow a new value 'none' for order that will cause the projects
to be in the order we learned about them. In case of reading the
list of projects from a file, this should be the order as they are
listed in the file. In case of reading the list of projects from
a directory this will probably give random results depending on the
filesystem in use.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Allow forks with project list fileFrank Lichtenheld Fri, 6 Apr 2007 21:58:11 +0000 (23:58 +0200)

gitweb: Allow forks with project list file

Make it possible to use the forks feature even when
reading the list of projects from a file, by creating
a list of known prefixes as we go. Forks have to be
listed after the main project in order to be recognised
as such.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Tue, 10 Apr 2007 20:53:07 +0000 (13:53 -0700)

Merge branch 'maint'

* maint:
Documentation: show-ref: document --exclude-existing
cvsexportcommit -p : fix the usage of git-apply -C.

Teach core object handling functions about gitlinksLinus Torvalds Tue, 10 Apr 2007 04:20:29 +0000 (21:20 -0700)

Teach core object handling functions about gitlinks

This teaches the really fundamental core SHA1 object handling routines
about gitlinks. We can compare trees with gitlinks in them (although we
can not actually generate patches for them yet - just raw git diffs),
and they show up as commits in "git ls-tree".

We also know to compare gitlinks as if they were directories (ie the
normal "sort as trees" rules apply).

[jc: amended a cut&paste error]

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

Teach "fsck" not to follow subproject linksLinus Torvalds Tue, 10 Apr 2007 04:15:29 +0000 (21:15 -0700)

Teach "fsck" not to follow subproject links

Since the subprojects don't necessarily even exist in the current tree,
much less in the current git repository (they are totally independent
repositories), we do not want to try to follow the chain from one git
repository to another through a gitlink.

This involves teaching fsck to ignore references to gitlink objects from
a tree and from the current index.

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

Add "S_IFDIRLNK" file mode infrastructure for git linksLinus Torvalds Tue, 10 Apr 2007 04:14:58 +0000 (21:14 -0700)

Add "S_IFDIRLNK" file mode infrastructure for git links

This just adds the basic helper functions to recognize and work with git
tree entries that are links to other git repositories ("subprojects").
They still aren't actually connected up to any of the code-paths, but
now all the infrastructure is in place.

The next commit will start actually adding actual subproject support.

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

Add 'resolve_gitlink_ref()' helper functionLinus Torvalds Tue, 10 Apr 2007 04:14:26 +0000 (21:14 -0700)

Add 'resolve_gitlink_ref()' helper function

This new function resolves a ref in *another* git repository. It's
named for its intended use: to look up the git link to a subproject.

It's not actually wired up to anything yet, but we're getting closer to
having fundamental plumbing support for "links" from one git directory
to another, which is the basis of subproject support.

[jc: amended a FILE* leak]

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

git-fetch: use fetch--tool pick-rref to avoid local... Junio C Hamano Thu, 5 Apr 2007 10:22:55 +0000 (03:22 -0700)

git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate

When we are fetching from a repository that is on a local
filesystem, first check if we have all the objects that we are
going to fetch available locally, by not just checking the tips
of what we are fetching, but with a full reachability analysis
to our existing refs. In such a case, we do not have to run
git-fetch-pack which would send many needless objects. This is
especially true when the other repository is an alternate of the
current repository (e.g. perhaps the repository was created by
running "git clone -l -s" from there).

The useless objects transferred used to be discarded when they
were expanded by git-unpack-objects called from git-fetch-pack,
but recent git-fetch-pack prefers to keep the data it receives
from the other end without exploding them into loose objects,
resulting in a pack full of duplicated data when fetching from
your own alternate.

This also uses fetch--tool pick-rref on dumb transport side to
remove a shell loop to do the same.

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

git-fetch--tool pick-rrefJunio C Hamano Thu, 5 Apr 2007 10:22:54 +0000 (03:22 -0700)

git-fetch--tool pick-rref

This script helper takes list of fully qualified refnames and
results from ls-remote and grabs only the lines for the named
refs from the latter.

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

t3030: merge-recursive backend test.Junio C Hamano Sat, 7 Apr 2007 14:17:35 +0000 (07:17 -0700)

t3030: merge-recursive backend test.

We have fairly extensive coverage of read-tree 3-way machinery,
and many Porcelain-ish tests use git-merge front-end tests, but
we did not have good basic test for merge-recursive, which made
it very hard to hack on it.

I used this during the recent work to teach D/F conflicts to
merge-recursive.

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

merge-recursive: handle D/F conflict case more carefully.Junio C Hamano Sat, 7 Apr 2007 13:41:13 +0000 (06:41 -0700)

merge-recursive: handle D/F conflict case more carefully.

When a path D that originally was blob in the ancestor was
modified on our branch while it was removed on the other branch,
we keep stages 1 and 2, and leave our version in the working
tree. If the other branch created a path D/F, however, that
path can cleanly be resolved in the index (after all, the
ancestor nor we do not have it and only the other side added),
but it cannot be checked out. The issue is the same when the
other branch had D and we had renamed it to D/F, or the ancestor
had D/F instead of D (so there are four combinations).

Do not stop the merge, but leave both D and D/F paths in the
index so that the user can clear things up.

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

merge-recursive: do not barf on "to be removed" entries.Junio C Hamano Sat, 7 Apr 2007 12:52:57 +0000 (05:52 -0700)

merge-recursive: do not barf on "to be removed" entries.

When update-trees::threeway_merge() decides that a path that
exists in the current index (and HEAD) is to be removed, it
leaves a stage 0 entry whose mode bits are set to 0. The code
mistook it as "this stage wants the blob here", and proceeded
to call update_file_flags() which ended up trying to put the
mode=0 entry in the index, got very confused, and ended up
barfing with "do not know what to do with 000000".

Since threeway_merge() does not handle case #10 (one side
removes while the other side does not do anything), this is not
a problem while we refuse to merge branches that have D/F
conflicts, but when we start resolving them, we would need to be
able to remove cache entries, and at that point it starts to
matter.

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

Treat D/F conflict entry more carefully in unpack-trees... Junio C Hamano Sat, 7 Apr 2007 12:49:19 +0000 (05:49 -0700)

Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()

This fixes three buglets in threeway_merge() regarding D/F
conflict entries.

* After finishing with path D and handling path D/F, some stages
have D/F conflict entry which are obviously non-NULL. For the
purpose of determining if the path D/F is missing in the
ancestor, they should not be taken into account.

* D/F conflict entry is a marker to say "this stage does _not_
have the path", so do not send them to keep_entry().

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

t1000: fix case table.Junio C Hamano Sat, 7 Apr 2007 12:42:01 +0000 (05:42 -0700)

t1000: fix case table.

Case #10 is not handled with unpack-trees.c:threeway_merge()
internally, unless under the agressive rule, and it is not a
bug. As the test expects, ND (one side did not do anything,
other side deleted) case was meant to be handled by the caller's
policy (e.g. git-merge-one-file or git-merge-recursive).

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

shortlog -w: make wrap-line behaviour optional.Junio C Hamano Sun, 8 Apr 2007 08:28:00 +0000 (01:28 -0700)

shortlog -w: make wrap-line behaviour optional.

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

Use print_wrapped_text() in shortlogJohannes Schindelin Fri, 22 Dec 2006 21:15:59 +0000 (22:15 +0100)

Use print_wrapped_text() in shortlog

Some oneline descriptions are just too long. In shortlog, it looks much
nicer when they are wrapped. Since print_wrapped_text() is UTF-8 aware,
it also works with those descriptions.

[jc: with minimum fixes]

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

validate reused pack data with CRC when possibleNicolas Pitre Tue, 10 Apr 2007 04:15:41 +0000 (00:15 -0400)

validate reused pack data with CRC when possible

This replaces the inflate validation with a CRC validation when reusing
data from a pack which uses index version 2. That makes repacking much
safer against corruptions, and it should be a bit faster too.

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

allow forcing index v2 and 64-bit offset tresholdNicolas Pitre Mon, 9 Apr 2007 21:32:03 +0000 (17:32 -0400)

allow forcing index v2 and 64-bit offset treshold

This is necessary for testing the new capabilities in some automated
way without having an actual 4GB+ pack.

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

pack-redundant.c: learn about index v2Nicolas Pitre Mon, 9 Apr 2007 05:06:37 +0000 (01:06 -0400)

pack-redundant.c: learn about index v2

Initially the conversion was made using nth_packed_object_sha1() which
made this file completely index version agnostic. Unfortunately the
overhead was quite significant so I went back to raw index walking but
with selectable base and step values which brought back similar
performances as the original.

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

show-index.c: learn about index v2Nicolas Pitre Mon, 9 Apr 2007 05:06:36 +0000 (01:06 -0400)

show-index.c: learn about index v2

When index v2 is encountered, the CRC32 of each object is also displayed
in parenthesis at the end of the line.

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

sha1_file.c: learn about index version 2Nicolas Pitre Mon, 9 Apr 2007 05:06:35 +0000 (01:06 -0400)

sha1_file.c: learn about index version 2

With this patch, packs larger than 4GB are usable, even on a 32-bit machine
(at least on Linux). If off_t is not large enough to deal with a large
pack then die() is called instead of attempting to use the pack and
producing garbage.

This was tested with a 8GB pack specially created for the occasion on
a 32-bit machine.

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

index-pack: learn about pack index version 2Nicolas Pitre Mon, 9 Apr 2007 05:06:34 +0000 (01:06 -0400)

index-pack: learn about pack index version 2

Like previous patch but for index-pack.

[ There is quite some code duplication between pack-objects and index-pack
for generating a pack index (and fast-import as well I suppose). This
should be reworked into a common function eventually. But not now. ]

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

pack-objects: learn about pack index version 2Nicolas Pitre Mon, 9 Apr 2007 05:06:33 +0000 (01:06 -0400)

pack-objects: learn about pack index version 2

Pack index version 2 goes as follows:

- 8 bytes of header with signature and version.

- 256 entries of 4-byte first-level fan-out table.

- Table of sorted 20-byte SHA1 records for each object in pack.

- Table of 4-byte CRC32 entries for raw pack object data.

- Table of 4-byte offset entries for objects in the pack if offset is
representable with 31 bits or less, otherwise it is an index in the next
table with top bit set.

- Table of 8-byte offset entries indexed from previous table for offsets
which are 32 bits or more (optional).

- 20-byte SHA1 checksum of sorted object names.

- 20-byte SHA1 checksum of the above.

The object SHA1 table is all contiguous so future pack format that would
contain this table directly won't require big changes to the code. It is
also tighter for slightly better cache locality when looking up entries.

Support for large packs exceeding 31 bits in size won't impose an index
size bloat for packs within that range that don't need a 64-bit offset.
And because newer objects which are likely to be the most frequently used
are located at the beginning of the pack, they won't pay the 64-bit offset
lookup at run time either even if the pack is large.

Right now an index version 2 is created only when the biggest offset in a
pack reaches 31 bits. It might be a good idea to always use index version
2 eventually to benefit from the CRC32 it contains when reusing pack data
while repacking.

[jc: with the "oops" fix to keep track of the last offset correctly]

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

compute object CRC32 with index-packNicolas Pitre Mon, 9 Apr 2007 05:06:32 +0000 (01:06 -0400)

compute object CRC32 with index-pack

Same as previous patch but for index-pack.

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

compute a CRC32 for each object as stored in a packNicolas Pitre Mon, 9 Apr 2007 05:06:31 +0000 (01:06 -0400)

compute a CRC32 for each object as stored in a pack

The most important optimization for performance when repacking is the
ability to reuse data from a previous pack as is and bypass any delta
or even SHA1 computation by simply copying the raw data from one pack
to another directly.

The problem with this is that any data corruption within a copied object
would go unnoticed and the new (repacked) pack would be self-consistent
with its own checksum despite containing a corrupted object. This is a
real issue that already happened at least once in the past.

In some attempt to prevent this, we validate the copied data by inflating
it and making sure no error is signaled by zlib. But this is still not
perfect as a significant portion of a pack content is made of object
headers and references to delta base objects which are not deflated and
therefore not validated when repacking actually making the pack data reuse
still not as safe as it could be.

Of course a full SHA1 validation could be performed, but that implies
full data inflating and delta replaying which is extremely costly, which
cost the data reuse optimization was designed to avoid in the first place.

So the best solution to this is simply to store a CRC32 of the raw pack
data for each object in the pack index. This way any object in a pack can
be validated before being copied as is in another pack, including header
and any other non deflated data.

Why CRC32 instead of a faster checksum like Adler32? Quoting Wikipedia:

Jonathan Stone discovered in 2001 that Adler-32 has a weakness for very
short messages. He wrote "Briefly, the problem is that, for very short
packets, Adler32 is guaranteed to give poor coverage of the available
bits. Don't take my word for it, ask Mark Adler. :-)" The problem is
that sum A does not wrap for short messages. The maximum value of A for
a 128-byte message is 32640, which is below the value 65521 used by the
modulo operation. An extended explanation can be found in RFC 3309,
which mandates the use of CRC32 instead of Adler-32 for SCTP, the
Stream Control Transmission Protocol.

In the context of a GIT pack, we have lots of small objects, especially
deltas, which are likely to be quite small and in a size range for which
Adler32 is dimed not to be sufficient. Another advantage of CRC32 is the
possibility for recovery from certain types of small corruptions like
single bit errors which are the most probable type of corruptions.

OK what this patch does is to compute the CRC32 of each object written to
a pack within pack-objects. It is not written to the index yet and it is
obviously not validated when reusing pack data yet either.

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

add overflow tests on pack offset variablesNicolas Pitre Mon, 9 Apr 2007 05:06:30 +0000 (01:06 -0400)

add overflow tests on pack offset variables

Change a few size and offset variables to more appropriate type, then
add overflow tests on those offsets. This prevents any bad data to be
generated/processed if off_t happens to not be large enough to handle
some big packs.

Better be safe than sorry.

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

make overflow test on delta base offset work regardless... Nicolas Pitre Mon, 9 Apr 2007 05:06:29 +0000 (01:06 -0400)

make overflow test on delta base offset work regardless of variable size

This patch introduces the MSB() macro to obtain the desired number of
most significant bits from a given variable independently of the variable
type.

It is then used to better implement the overflow test on the OBJ_OFS_DELTA
base offset variable with the property of always working correctly
regardless of the type/size of that variable.

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

get rid of num_packed_objects()Nicolas Pitre Mon, 9 Apr 2007 05:06:28 +0000 (01:06 -0400)

get rid of num_packed_objects()

The coming index format change doesn't allow for the number of objects
to be determined from the size of the index file directly. Instead, Let's
initialize a field in the packed_git structure with the object count when
the index is validated since the count is always known at that point.

While at it let's reorder some struct packed_git fields to avoid padding
due to needed 64-bit alignment for some of them.

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

Avoid overflowing name buffer in deep directory structuresLinus Torvalds Tue, 10 Apr 2007 04:13:58 +0000 (21:13 -0700)

Avoid overflowing name buffer in deep directory structures

This just makes sure that when we do a read_directory(), we check
that the filename fits in the buffer we allocated (with a bit of
slop)

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

diff-lib: use ce_mode_from_stat() rather than messing... Linus Torvalds Tue, 10 Apr 2007 04:13:29 +0000 (21:13 -0700)

diff-lib: use ce_mode_from_stat() rather than messing with modes manually

The diff helpers used to do the magic mode canonicalization and all the
other special mode handling by hand ("trust executable bit" and "has
symlink support" handling).

That's bogus. Use "ce_mode_from_stat()" that does this all for us.

This is also going to be required when we add support for links to other
git repositories.

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

Documentation: show-ref: document --exclude-existingJulian Phillips Mon, 9 Apr 2007 20:57:36 +0000 (21:57 +0100)

Documentation: show-ref: document --exclude-existing

Use the comment in the code to document the --exclude-existing
function to git-show-ref.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsexportcommit -p : fix the usage of git-apply -C.Tomash Brechko Mon, 9 Apr 2007 11:24:02 +0000 (15:24 +0400)

cvsexportcommit -p : fix the usage of git-apply -C.

Unlike 'patch --fuzz=NUM', which specifies the number of lines allowed
to mismatch, 'git-apply -CNUM' requests the match of NUM lines of
context. Omitting -C requests full context match, and that's what
should be used for cvsexportcommit -p.

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

git-archive: make tar the default formatRené Scharfe Mon, 9 Apr 2007 15:12:53 +0000 (17:12 +0200)

git-archive: make tar the default format

As noted by Junio, --format=tar should be assumed if no format
was specified.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/push'Junio C Hamano Mon, 9 Apr 2007 06:54:47 +0000 (23:54 -0700)

Merge branch 'jc/push'

* jc/push:
git-push to multiple locations does not stop at the first failure
git-push reports the URL after failing.

Merge branch 'jc/merge-subtree'Junio C Hamano Mon, 9 Apr 2007 06:51:14 +0000 (23:51 -0700)

Merge branch 'jc/merge-subtree'

* jc/merge-subtree:
A new merge stragety 'subtree'.

It is safe to merge this early as this is a feature that user
explicitly needs to ask for and would not trigger otherwise. A
known issue with the current implementation is that the subtree
matching heuristics is very stupid. It could run ls-tree twice
and try to count intersection.

Giving it wider audience would help it to get improved by
motivated volunteers.

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

Merge branch 'js/fetch-progress'Junio C Hamano Mon, 9 Apr 2007 06:27:22 +0000 (23:27 -0700)

Merge branch 'js/fetch-progress'

* js/fetch-progress:
git-fetch: add --quiet

Merge branch 'maint'Junio C Hamano Mon, 9 Apr 2007 06:20:43 +0000 (23:20 -0700)

Merge branch 'maint'

* maint:
Add Documentation/cmd-list.made to .gitignore
git-svn: fix log command to avoid infinite loop on long commit messages
git-svn: dcommit/rebase confused by patches with git-svn-id: lines
git-svn: bail out on incorrect command-line options

Add Documentation/cmd-list.made to .gitignoreJunio C Hamano Mon, 9 Apr 2007 05:14:16 +0000 (22:14 -0700)

Add Documentation/cmd-list.made to .gitignore

Noticed by Randal L. Schwartz.

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

git-svn: fix log command to avoid infinite loop on... Eric Wong Sun, 8 Apr 2007 07:59:22 +0000 (00:59 -0700)

git-svn: fix log command to avoid infinite loop on long commit messages

This bug has been around since the the conversion to use the
Git.pm library back in October or November. Eventually I'd like
"git rev-list/log" to have the option to not truncate overly
long messages.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: dcommit/rebase confused by patches with git... Eric Wong Sun, 8 Apr 2007 07:59:19 +0000 (00:59 -0700)

git-svn: dcommit/rebase confused by patches with git-svn-id: lines

When patches are merged from another git-svn managed branch,
they will have the git-svn-id: metadata line in them (generated
by git-format-patch).

When doing rebase or dcommit via git-svn, this would cause
git-svn to find the wrong upstream branch. We now verify
that the commit is consistent with the value in the .rev_db
file.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: bail out on incorrect command-line optionsEric Wong Tue, 3 Apr 2007 08:57:08 +0000 (01:57 -0700)

git-svn: bail out on incorrect command-line options

"git svn log" is the only command that needs the pass-through
option in Getopt::Long; otherwise we will bail out and let the
user know something is wrong.

Also, avoid printing out unaccepted mixed-case options (that
are reserved for the command-line) such as --useSvmProps
in the usage() function.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: Add asciidoc documentation for new database... Frank Lichtenheld Sat, 7 Apr 2007 14:58:10 +0000 (16:58 +0200)

cvsserver: Add asciidoc documentation for new database backend configuration

Documents the new configuration variables and the variable
substitution mechanism.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Start 1.5.2 cycle by prepareing RelNotes for it.Junio C Hamano Sun, 8 Apr 2007 06:59:32 +0000 (23:59 -0700)

Start 1.5.2 cycle by prepareing RelNotes for it.

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

Merge branch 'jc/read-tree-df' (early part)Junio C Hamano Sun, 8 Apr 2007 06:52:40 +0000 (23:52 -0700)

Merge branch 'jc/read-tree-df' (early part)

* 'jc/read-tree-df' (early part):
Fix switching to a branch with D/F when current branch has file D.
Fix twoway_merge that passed d/f conflict marker to merged_entry().
Fix read-tree --prefix=dir/.
unpack-trees: get rid of *indpos parameter.
unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
add_cache_entry(): removal of file foo does not conflict with foo/bar

Merge branch 'maint'Junio C Hamano Sun, 8 Apr 2007 06:34:45 +0000 (23:34 -0700)

Merge branch 'maint'

* maint:
Prepare for 1.5.1.1
cvsserver: small corrections to asciidoc documentation

Prepare for 1.5.1.1Junio C Hamano Sun, 8 Apr 2007 06:33:14 +0000 (23:33 -0700)

Prepare for 1.5.1.1

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

cvsserver: Corrections to the database backend configur... Frank Lichtenheld Sat, 7 Apr 2007 14:58:09 +0000 (16:58 +0200)

cvsserver: Corrections to the database backend configuration

Don't include the scheme name in gitcvs.dbdriver, it is
always 'dbi' anyway.

Don't allow ':' in driver names nor ';' in database names for
sanity reasons.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: small corrections to asciidoc documentationFrank Lichtenheld Sat, 7 Apr 2007 14:58:08 +0000 (16:58 +0200)

cvsserver: small corrections to asciidoc documentation

Fix a typo: s/Not/Note/

Some formating fixes: Use ` ` syntax for all filenames and
' ' syntax for all commandline switches.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

A new merge stragety 'subtree'.Junio C Hamano Fri, 16 Feb 2007 00:32:45 +0000 (16:32 -0800)

A new merge stragety 'subtree'.

This merge strategy largely piggy-backs on git-merge-recursive.
When merging trees A and B, if B corresponds to a subtree of A,
B is first adjusted to match the tree structure of A, instead of
reading the trees at the same level. This adjustment is also
done to the common ancestor tree.

If you are pulling updates from git-gui repository into git.git
repository, the root level of the former corresponds to git-gui/
subdirectory of the latter. The tree object of git-gui's toplevel
is wrapped in a fake tree object, whose sole entry has name 'git-gui'
and records object name of the true tree, before being used by
the 3-way merge code.

If you are merging the other way, only the git-gui/ subtree of
git.git is extracted and merged into git-gui's toplevel.

The detection of corresponding subtree is done by comparing the
pathnames and types in the toplevel of the tree.

Heuristics galore! That's the git way ;-).

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

git-push to multiple locations does not stop at the... Junio C Hamano Sat, 7 Apr 2007 06:04:53 +0000 (23:04 -0700)

git-push to multiple locations does not stop at the first failure

When pushing into multiple repositories with git push, via
multiple URL in .git/remotes/$shorthand or multiple url
variables in [remote "$shorthand"] section, we used to stop upon
the first failure. Continue the operation and report the
failure at the end.

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

git-push reports the URL after failing.Junio C Hamano Sat, 7 Apr 2007 06:04:55 +0000 (23:04 -0700)

git-push reports the URL after failing.

This came up on #git when somebody was getting 'unable to create
./objects/tmp_oXXXX' but sweared he had write permission to that
directory. It turned out that the repository URL was changed
and he was accessing a repository he does not have a write
permission anymore.

I am not sure how much this would have helped somebody who
believed he was accessing location when the permission of that
location was changed while he was looking the other way, though.
But giving more information on the error path would be better,
and the next change would be helped with this as well.

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

Merge branch 'jc/index-output'Junio C Hamano Sat, 7 Apr 2007 09:26:24 +0000 (02:26 -0700)

Merge branch 'jc/index-output'

* jc/index-output:
git-read-tree --index-output=<file>
_GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.

Conflicts:

builtin-apply.c

Merge branch 'fp/make-j'Junio C Hamano Sat, 7 Apr 2007 09:20:47 +0000 (02:20 -0700)

Merge branch 'fp/make-j'

* fp/make-j:
Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Merge branch 'cc/bisect'Junio C Hamano Sat, 7 Apr 2007 09:20:39 +0000 (02:20 -0700)

Merge branch 'cc/bisect'

* cc/bisect:
git-bisect: allow bisecting with only one bad commit.
t6030: add a bit more tests to git-bisect
git-bisect: modernization
Documentation: bisect: "start" accepts one bad and many good commits
Bisect: teach "bisect start" to optionally use one bad and many good revs.

Merge branch 'jc/checkout' (early part)Junio C Hamano Sat, 7 Apr 2007 09:19:54 +0000 (02:19 -0700)

Merge branch 'jc/checkout' (early part)

* 'jc/checkout' (early part):
checkout: allow detaching to HEAD even when switching to the tip of a branch

Merge branch 'maint'Junio C Hamano Sat, 7 Apr 2007 08:30:43 +0000 (01:30 -0700)

Merge branch 'maint'

* maint:
Documentation: tighten dependency for git.{html,txt}
Makefile: iconv() on Darwin has the old interface
t5300-pack-object.sh: portability issue using /usr/bin/stat
t3200-branch.sh: small language nit
usermanual.txt: some capitalization nits
Make builtin-branch.c handle the git config file
rename_ref(): only print a warning when config-file update fails
Distinguish branches by more than case in tests.
Avoid composing too long "References" header.
cvsimport: Improve formating consistency
cvsimport: Reorder options in documentation for better understanding
cvsimport: Improve usage error reporting
cvsimport: Improve documentation of CVSROOT and CVS module determination
cvsimport: sync usage lines with existing options

Conflicts:

Documentation/Makefile

Documentation: tighten dependency for git.{html,txt}Junio C Hamano Fri, 6 Apr 2007 05:17:20 +0000 (22:17 -0700)

Documentation: tighten dependency for git.{html,txt}

Every time _any_ documentation page changed, cmds-*.txt files
were regenerated, which caused git.{html,txt} to be remade. Try
not to update cmds-*.txt files if their new contents match the
old ones.

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

Makefile: iconv() on Darwin has the old interfaceArjen Laarhoven Fri, 6 Apr 2007 23:49:17 +0000 (01:49 +0200)

Makefile: iconv() on Darwin has the old interface

The libiconv on Darwin uses the old iconv() interface (2nd argument is a
const char **, instead of a char **). Add OLD_ICONV to the Darwin
variable definitions to handle this.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Acked-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

t5300-pack-object.sh: portability issue using /usr... Arjen Laarhoven Fri, 6 Apr 2007 23:49:03 +0000 (01:49 +0200)

t5300-pack-object.sh: portability issue using /usr/bin/stat

In the test 'compare delta flavors', /usr/bin/stat is used to get file size.
This isn't portable. There already is a dependency on Perl, use its '-s'
operator to get the file size.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-bisect: allow bisecting with only one bad commit.Junio C Hamano Fri, 6 Apr 2007 06:27:44 +0000 (23:27 -0700)

git-bisect: allow bisecting with only one bad commit.

This allows you to say:

git bisect start
git bisect bad $bad
git bisect next

to start bisection without knowing a good commit. This would
have you try a commit that is half-way since the beginning of
the history, which is rather wasteful if you already know a good
commit, but if you don't (or your history is short enough that
you do not care), there is no reason not to allow this.

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

t6030: add a bit more tests to git-bisectJunio C Hamano Fri, 6 Apr 2007 05:52:37 +0000 (22:52 -0700)

t6030: add a bit more tests to git-bisect

Verify that git-bisect does not start before getting one bad and
one good commit.

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

t3200-branch.sh: small language nitArjen Laarhoven Fri, 6 Apr 2007 23:48:54 +0000 (01:48 +0200)

t3200-branch.sh: small language nit

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

usermanual.txt: some capitalization nitsArjen Laarhoven Fri, 6 Apr 2007 23:48:36 +0000 (01:48 +0200)

usermanual.txt: some capitalization nits

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make builtin-branch.c handle the git config fileLars Hjemli Fri, 6 Apr 2007 12:13:00 +0000 (14:13 +0200)

Make builtin-branch.c handle the git config file

This moves the knowledge about .git/config usage out of refs.c and into
builtin-branch.c instead, which allows git-branch to update HEAD to point
at the moved branch before attempting to update the config file. It also
allows git-branch to exit with an error code if updating the config file
should fail.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

rename_ref(): only print a warning when config-file... Lars Hjemli Fri, 6 Apr 2007 08:33:06 +0000 (10:33 +0200)

rename_ref(): only print a warning when config-file update fails

If git_config_rename_section() fails, rename_ref() used to return 1, which
left HEAD pointing to an absent refs/heads file (since the actual renaming
had already occurred).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Distinguish branches by more than case in tests.Brian Gernhardt Fri, 6 Apr 2007 05:42:04 +0000 (01:42 -0400)

Distinguish branches by more than case in tests.

The renaming without config test changed a branch from q to Q, which
fails on non-case sensitive file systems. Change the test to use q
and q2.

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

Avoid composing too long "References" header.YOSHIFUJI Hideaki / 吉藤英明 Thu, 5 Apr 2007 23:50:24 +0000 (08:50 +0900)

Avoid composing too long "References" header.

The number of characters in a line MUST be no more than 998 characters,
and SHOULD be no more than 78 characters (RFC2822).
It is much safer to fold the header by ourselves.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Improve formating consistencyFrank Lichtenheld Fri, 6 Apr 2007 21:52:43 +0000 (23:52 +0200)

cvsimport: Improve formating consistency

Use ' ' syntax for all commandline options mentioned in text.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Reorder options in documentation for better... Frank Lichtenheld Fri, 6 Apr 2007 21:52:42 +0000 (23:52 +0200)

cvsimport: Reorder options in documentation for better understanding

The current order the options are documented in makes no sense
at all to me. Reorder them so that similar options are grouped
together and also order them somehwhat by importance.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Improve usage error reportingFrank Lichtenheld Fri, 6 Apr 2007 21:52:41 +0000 (23:52 +0200)

cvsimport: Improve usage error reporting

Actually tell the user what he did wrong in case of usage errors
instead of only printing the general usage information.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: Improve documentation of CVSROOT and CVS... Frank Lichtenheld Fri, 6 Apr 2007 21:52:40 +0000 (23:52 +0200)

cvsimport: Improve documentation of CVSROOT and CVS module determination

Document the fact that git-cvsimport tries to find out CVSROOT from
CVS/Root and $ENV{CVSROOT} and CVS_module from CVS/Repository.

Also use ` ` syntax for all filenames for consistency.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsimport: sync usage lines with existing optionsFrank Lichtenheld Fri, 6 Apr 2007 21:52:39 +0000 (23:52 +0200)

cvsimport: sync usage lines with existing options

Sync both the usage lines in the code and the asciidoc
documentation with the real list of options. While
all options seems to be documented in the asciidoc
document, not all of them were listed in the usage line.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-bisect: modernizationJunio C Hamano Fri, 6 Apr 2007 05:51:14 +0000 (22:51 -0700)

git-bisect: modernization

This slightly modernizes the bisect script to use show-ref/for-each-ref
instead of looking into $GIT_DIR/refs files directly.

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

Merge branch 'maint'Junio C Hamano Thu, 5 Apr 2007 23:34:51 +0000 (16:34 -0700)

Merge branch 'maint'

* maint:
Fix lseek(2) calls with args 2 and 3 swapped
Honor -p<n> when applying git diffs
Fix dependency of common-cmds.h
Fix renaming branch without config file
DESTDIR support for git/contrib/emacs
gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
Document --left-right option to rev-list.
Revert "builtin-archive: use RUN_SETUP"
rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.
rerere: make sorting really stable.
Fix t4200-rerere for white-space from "wc -l"

Fix lseek(2) calls with args 2 and 3 swappedDana How Thu, 5 Apr 2007 19:05:57 +0000 (12:05 -0700)

Fix lseek(2) calls with args 2 and 3 swapped

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

Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel... Fernando J. Pereda Wed, 4 Apr 2007 20:42:33 +0000 (22:42 +0200)

Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Signed-off-by: Fernando J. Pereda <ferdy@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: bisect: "start" accepts one bad and... Christian Couder Thu, 5 Apr 2007 03:33:53 +0000 (05:33 +0200)

Documentation: bisect: "start" accepts one bad and many good commits

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Bisect: teach "bisect start" to optionally use one... Christian Couder Wed, 4 Apr 2007 05:12:02 +0000 (07:12 +0200)

Bisect: teach "bisect start" to optionally use one bad and many good revs.

One bad commit is fundamentally needed for bisect to run,
and if we beforehand know more good commits, we can narrow
the bisect space down without doing the whole tree checkout
every time we give good commits.

This patch implements:

git bisect start [<bad> [<good>...]] [--] [<pathspec>...]

as a short-hand for this command sequence:

git bisect start
git bisect bad $bad
git bisect good $good1 $good2...

On the other hand, there may be some confusion between revs
(<bad> and <good>...) and <pathspec>... if -- is not used
and if an invalid rev or a pathspec that looks like a rev is
given.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix passing of TCLTK_PATH to git-guiAlex Riesen Thu, 5 Apr 2007 19:31:53 +0000 (21:31 +0200)

Fix passing of TCLTK_PATH to git-gui

GNU make does not include environment variables by default
in its namespace. Just pass them in make command line.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Rename add_file_to_index() to add_file_to_cache()Junio C Hamano Mon, 2 Apr 2007 05:14:40 +0000 (22:14 -0700)

Rename add_file_to_index() to add_file_to_cache()

This function was not called "add_file_to_cache()" only because
an ancient program, update-cache, used that name as an internal
function name that does something slightly different. Now that
is gone, we can take over the better name.

The plan is to name all functions that operate on the default
index xxx_cache(). Later patches create a variant of them that
take an explicit parameter xxx_index(), and then turn
xxx_cache() functions into macros that use "the_index".

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