Junio C Hamano [Sun, 22 Apr 2007 00:20:50 +0000 (17:20 -0700)]
Merge branch 'np/pack'
* np/pack: (27 commits)
document --index-version for index-pack and pack-objects
pack-objects: remove obsolete comments
pack-objects: better check_object() performances
add get_size_from_delta()
pack-objects: make in_pack_header_size a variable of its own
pack-objects: get rid of create_final_object_list()
pack-objects: get rid of reuse_cached_pack
pack-objects: clean up list sorting
pack-objects: rework check_delta_limit usage
pack-objects: equal objects in size should delta against newer objects
pack-objects: optimize preferred base handling a bit
clean up add_object_entry()
tests for various pack index features
use test-genrandom in tests instead of /dev/urandom
simple random data generator for tests
validate reused pack data with CRC when possible
allow forcing index v2 and 64-bit offset treshold
pack-redundant.c: learn about index v2
show-index.c: learn about index v2
sha1_file.c: learn about index version 2
...
Junio C Hamano [Sun, 22 Apr 2007 00:19:34 +0000 (17:19 -0700)]
Merge branch 'jp/refs'
* jp/refs:
refs.c: add a function to sort a ref list, rather then sorting on add
Junio C Hamano [Sun, 22 Apr 2007 00:19:25 +0000 (17:19 -0700)]
Merge branch 'jc/quickfetch'
* jc/quickfetch:
Make sure quickfetch is not fooled with a previous, incomplete fetch.
git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
git-fetch--tool pick-rref
Junio C Hamano [Sun, 22 Apr 2007 00:16:48 +0000 (17:16 -0700)]
Merge branch 'maint'
* maint:
GIT 1.5.1.2
perl: install private Error.pm if the site version is older than our own
git-clone: fix dumb protocol transport to clone from pack-pruned ref
Junio C Hamano [Sat, 21 Apr 2007 20:57:07 +0000 (13:57 -0700)]
GIT 1.5.1.2
Signed-off-by: Junio C Hamano <junkio@cox.net>
Eric Wong [Sat, 21 Apr 2007 07:55:00 +0000 (00:55 -0700)]
perl: install private Error.pm if the site version is older than our own
bdash (on IRC) had a problem with Git.pm (via git-svn) when his
site installation of Error.pm was older than the version we
package.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Linus Torvalds [Sat, 21 Apr 2007 01:30:06 +0000 (18:30 -0700)]
Fix a copy-n-paste bug in the object decorator code.
Duh.
When I did the object decorator thing, I made the "loop over the hash"
function use the same logic for updating the hash, ie made them use
if (++j >= size)
j = 0;
for both the hash update for both "insert" and "lookup"
HOWEVER.
For some inexplicable reason I had an extraneous
j++;
in the insert path (probably just from the fact that the old code there
used
j++;
if (j >= size)
j = 0;
and when I made them use the same logic I just didn't remove the old
extraneous line properly.
This fixes it.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Sat, 21 Apr 2007 00:25:27 +0000 (17:25 -0700)]
git-clone: fix dumb protocol transport to clone from pack-pruned ref
This forward-ports a fix from
2986c022 to git-clone.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Aneesh Kumar K.V [Thu, 19 Apr 2007 16:56:03 +0000 (22:26 +0530)]
gitview: annotation support
List files modifed as a part of the commit in the diff window
Support annotation of the file listed in the diff window
Support history browsing in the annotation window.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Shawn O. Pearce [Fri, 20 Apr 2007 06:37:18 +0000 (02:37 -0400)]
Kill the useless progress meter in merge-recursive
The mess known as the progress meter in merge-recursive was my own
fault; I put it in thinking that we might be spending a lot of time
resolving unmerged entries in the index that were not handled by
the simple 3-way index merge code.
Turns out we don't really spend that much time there, so the progress
meter was pretty much always jumping to "(n/n) 100%" as soon as
the program started. That isn't a very good indication of progress.
Since I don't have a great solution for how a progress meter should
work here, I'm proposing we back it out entirely.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Brian Gernhardt [Thu, 19 Apr 2007 04:51:06 +0000 (00:51 -0400)]
Remove case-sensitive file in t3030-merge-recursive.
Rename "A" to the unused "c"
Signed-off-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Alexandre Julliard [Thu, 19 Apr 2007 11:16:58 +0000 (13:16 +0200)]
git.el: Add a commit description to the reflog.
Add a description of the commit to the reflog using the first line of
the log message, the same way the git-commit script does it.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Shawn O. Pearce [Fri, 20 Apr 2007 06:08:47 +0000 (02:08 -0400)]
Contribute a fairly paranoid update hook
I'm using a variant of this update hook in a corporate environment
where we perform some validations of the commits and tags that
are being pushed. The model is a "central repository" type setup,
where users are given access to push to specific branches within
the shared central repository. In this particular installation we
run a specially patched git-receive-pack in setuid mode via SSH,
allowing all writes into the repository as the repository owner,
but only if this hook blesses it.
One of the major checks we perform with this hook is that the
'committer' line of a commit, or the 'tagger' line of a new annotated
tag actually correlates to the UNIX user who is performing the push.
Users can falsify these lines on their local repositories, but
the central repository that management trusts will reject all such
forgery attempts. Of course 'author' lines are still allowed to
be any value, as sometimes changes do come from other individuals.
Another nice feature of this hook is the access control lists for
all repositories on the system can also be stored and tracked in
a supporting Git repository, which can also be access controlled
by itself. This allows full auditing of who-had-what-when-and-why,
thanks to git-blame's data mining capabilities.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Fri, 20 Apr 2007 06:06:21 +0000 (23:06 -0700)]
Merge branch 'maint'
* maint:
Update git-config documentation
Fix unmatched emphasis tag in git-tutorial
Update git-cherry-pick documentation
Update git-archive documentation
Linus Torvalds [Fri, 20 Apr 2007 05:48:21 +0000 (22:48 -0700)]
Fix working directory errno handling when unlinking a directory
Alex Riesen noticed that the case where a file replaced a directory entry
in the working tree was broken on cygwin. It turns out that the code made
some Linux-specific assumptions, and also ignored errors entirely for the
case where the entry was a symlink rather than a file.
This cleans it up by separating out the common case into a function of its
own, so that both regular files and symlinks can share it, and by making
the error handling more obvious (and not depend on any Linux-specific
behaviour).
Acked-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Fri, 20 Apr 2007 02:16:53 +0000 (22:16 -0400)]
document --index-version for index-pack and pack-objects
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Fri, 20 Apr 2007 02:28:02 +0000 (22:28 -0400)]
pack-objects: remove obsolete comments
The sorted-by-sha ans sorted-by-type arrays are no more.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Thu, 19 Apr 2007 03:03:37 +0000 (22:03 -0500)]
Update git-config documentation
Documentation/git-config.txt: Added documentation for --system
Documentation/builtin-config.c: Added --system to the short usage
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Thu, 19 Apr 2007 03:03:31 +0000 (22:03 -0500)]
Fix unmatched emphasis tag in git-tutorial
In asciidoc 7.1.2 and prior there is no obvious way to get:
'add'ing
to emphasize only the "add", instead it treats the first apostrophe as the
beginning of an emphasis, and the second apostrophe as a regular
apostrophe and makes the rest of the line an emphasis since there is no
closing apostrophe. In the newer asciidoc you can do it pretty easily
with __add__ing but I'm not sure it would be best to make that a prereq
for something as silly as this.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Thu, 19 Apr 2007 03:03:26 +0000 (22:03 -0500)]
Update git-cherry-pick documentation
Documentation/git-cherry-pick.txt: Remove --replay as it is not
handled by the code (-r is however).
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Thu, 19 Apr 2007 03:03:14 +0000 (22:03 -0500)]
Update git-archive documentation
Documentation/git-archive.txt: Document -v/--verbose option.
Add -l as short form of --list.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Thu, 19 Apr 2007 02:33:38 +0000 (19:33 -0700)]
Merge branch 'maint'
* maint:
fix up strtoul_ui error handling
git-tar-tree: complete deprecation conversion message
Andy Whitcroft [Thu, 19 Apr 2007 02:08:15 +0000 (03:08 +0100)]
fix up strtoul_ui error handling
Two scanf() calls were converted to strtoul_ui() but the return
values were not updated to match. scanf() returns the number of
matched "values" which for this usage is 1 on success. strtoul_ui()
return 0 on success. Update these call sites to match.
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Sam Vilain [Wed, 18 Apr 2007 23:51:21 +0000 (11:51 +1200)]
git-tar-tree: complete deprecation conversion message
The syntax for git-archive is different; warn about it in the
deprecation message on the manual page.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Julian Phillips [Tue, 17 Apr 2007 01:42:50 +0000 (02:42 +0100)]
refs.c: add a function to sort a ref list, rather then sorting on add
Rather than sorting the refs list while building it, sort in one
go after it is built using a merge sort. This has a large
performance boost with large numbers of refs.
It shouldn't happen that we read duplicate entries into the same
list, but just in case sort_ref_list drops them if the SHA1s are
the same, or dies, as we have no way of knowing which one is the
correct one.
Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Wed, 18 Apr 2007 23:17:28 +0000 (16:17 -0700)]
Merge branch 'maint'
* maint:
git-shortlog: Fix two formatting errors in asciidoc documentation
Fix overwriting of files when applying contextually independent diffs
git-svn: don't allow globs to match regular files
Frank Lichtenheld [Wed, 18 Apr 2007 22:10:22 +0000 (00:10 +0200)]
git-shortlog: Fix two formatting errors in asciidoc documentation
First use [verse] in the SYNOPSIS so that the line break actually
shows.
Secondly drop the quotes around '.mailmap' since this exposes
a bug in our toolchain (didn't bother enough yet to find out wether
it is asciidoc's fault or that of the XSL templates) that leads to
the dot not getting escaped correctly in the roff output and thereby
swallowing the line.
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Alex Riesen [Wed, 18 Apr 2007 21:58:56 +0000 (23:58 +0200)]
Fix overwriting of files when applying contextually independent diffs
Noticed by applying two diffs of different contexts to the same file.
The check for existence of a file was wrong: the test assumed it was
a directory and reset the errno (twice: directly and by calling
lstat). So if an entry existed and was _not_ a directory no attempt
was made to rename into it, because the errno (expected by renaming
code) was already reset to 0. This resulted in error:
fatal: unable to write file file mode 100644
For Linux, removing "errno = 0" is enough, as lstat wont modify errno
if it was successful. The behavior should not be depended upon,
though, so modify the "if" as well.
The test simulates this situation.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Eric Wong [Wed, 18 Apr 2007 07:17:33 +0000 (00:17 -0700)]
git-svn: don't allow globs to match regular files
git only tracks the histories of full directories, not
that of individual files. Sometimes, SVN users will
place[1] a regular file in the directory designated
for subdirectories of branches or tags.
Thanks to jrockway on #git for pointing this out.
[1] mistakenly or otherwise, such as a README
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Wed, 18 Apr 2007 05:17:46 +0000 (22:17 -0700)]
Merge branch 'fl/cvsserver'
* fl/cvsserver:
config.txt: Add gitcvs.db* variables
cvsserver: Document the GIT branches -> CVS modules mapping more prominently
cvsserver: Reword documentation on necessity of write access
cvsserver: Allow to "add" a removed file
cvsserver: Add asciidoc documentation for new database backend configuration
cvsserver: Corrections to the database backend configuration
cvsserver: Use DBI->table_info instead of DBI->tables
cvsserver: Abort if connect to database fails
cvsserver: Make the database backend configurable
cvsserver: Allow to override the configuration per access method
cvsserver: Handle three part keys in git config correctly
cvsserver: Introduce new state variable 'method'
Conflicts:
Documentation/config.txt
Junio C Hamano [Wed, 18 Apr 2007 05:17:29 +0000 (22:17 -0700)]
Merge branch 'maint'
* maint:
Use const qualifier for 'sha1' parameter in delete_ref function
Carlos Rica [Wed, 18 Apr 2007 03:34:34 +0000 (05:34 +0200)]
Use const qualifier for 'sha1' parameter in delete_ref function
delete_ref function does not change the 'sha1' parameter. Non-const pointer
causes a compiler warning if you call to the function using a const argument.
Signed-off-by: Carlos Rica <jasampler@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Wed, 18 Apr 2007 01:03:00 +0000 (18:03 -0700)]
Update draft release notes for 1.5.2 with accumulated changes.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Wed, 18 Apr 2007 00:50:21 +0000 (17:50 -0700)]
Merge branch 'maint'
* maint:
Start preparing for 1.5.1.2
git-svn: quiet some warnings when run only with --version/--help
git-svn: respect lower bound of -r/--revision when following parent
Conflicts:
RelNotes
Junio C Hamano [Wed, 18 Apr 2007 00:32:23 +0000 (17:32 -0700)]
Start preparing for 1.5.1.2
Junio C Hamano [Wed, 18 Apr 2007 00:16:56 +0000 (17:16 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui
* 'master' of git://repo.or.cz/git-gui:
git-gui: Honor TCLTK_PATH if supplied
Revert "Allow wish interpreter to be defined with TCLTK_PATH"
git-gui: Display the directory basename in the title
git-gui: Brown paper bag fix division by 0 in blame
Always bind the return key to the default button
Do not break git-gui messages into multiple lines.
Improve look-and-feel of the git-gui tool.
Teach git-gui to use the user-defined UI font everywhere.
Allow wish interpreter to be defined with TCLTK_PATH
Junio C Hamano [Wed, 18 Apr 2007 00:16:41 +0000 (17:16 -0700)]
Merge branch 'maint' of git://repo.or.cz/git-gui into maint
* 'maint' of git://repo.or.cz/git-gui:
git-gui: Brown paper bag fix division by 0 in blame
Junio C Hamano [Tue, 17 Apr 2007 23:55:46 +0000 (16:55 -0700)]
Merge branch 'jc/read-tree-df'
* jc/read-tree-df:
t3030: merge-recursive backend test.
merge-recursive: handle D/F conflict case more carefully.
merge-recursive: do not barf on "to be removed" entries.
Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()
t1000: fix case table.
Junio C Hamano [Tue, 17 Apr 2007 10:31:47 +0000 (03:31 -0700)]
git-gui: Honor TCLTK_PATH if supplied
Mimick what we do for gitk. Since you do have a source file,
git-gui.sh, which is separate from the target, it should be much
easier in git-gui's Makefile.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Shawn O. Pearce [Tue, 17 Apr 2007 17:15:56 +0000 (13:15 -0400)]
Revert "Allow wish interpreter to be defined with TCLTK_PATH"
This reverts commit
e2a1bc67d321a0c03737179f331c39a52e7049d7.
Junio rightly pointed out this patch doesn't handle the
`make install` target very well:
Junio C Hamano <junkio@cox.net> writes:
> You should never generate new files in the source tree from
> 'install' target. Otherwise, the usual pattern of "make" as
> yourself and then "make install" as root would not work from a
> "root-to-nobody-squashing" NFS mounted source tree to local
> filesystem. You should know better than accepting such a patch.
Eric Wong [Tue, 17 Apr 2007 09:41:43 +0000 (02:41 -0700)]
git-svn: quiet some warnings when run only with --version/--help
These are harmless but annoying. They were introduced in
512b620bd9fef7f170562ecad835e37479f051ce
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Eric Wong [Sun, 15 Apr 2007 10:01:29 +0000 (03:01 -0700)]
git-svn: respect lower bound of -r/--revision when following parent
When an explicit --revision argument is specified, do not fetch
past the specified range into the beginning of history.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Steven Grimm [Mon, 16 Apr 2007 07:53:24 +0000 (00:53 -0700)]
Add --ignore-unmatch option to exit with zero status when no files are removed.
Signed-off-by: Steven Grimm <koreth@midwinter.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Mon, 16 Apr 2007 07:42:29 +0000 (00:42 -0700)]
Make sure quickfetch is not fooled with a previous, incomplete fetch.
This updates git-rev-list --objects to be a bit more careful
when listing a blob object to make sure the blob actually
exists, and uses it to make sure the quick-fetch optimization we
introduced earlier is not fooled by a previous incomplete fetch.
The quick-fetch optimization works by running this command:
git rev-list --objects <<commit-list>> --not --all
where <<commit-list>> is a list of commits that we are going to
fetch from the other side. If there is any object missing to
complete the <<commit-list>>, the rev-list would fail and die
(say, the commit was in our repository, but its tree wasn't --
then it will barf while trying to list the blobs the tree
contains because it cannot read that tree).
Usually we do not have the objects (otherwise why would we
fetching?), but in one important special case we do: when the
remote repository is used as an alternate object store
(i.e. pointed by .git/objects/info/alternates). We could check
.git/objects/info/alternates to see if the remote we are
interacting with is one of them (or is used as an alternate,
recursively, by one of them), but that check is more cumbersome
than it is worth.
The above check however did not catch missing blob, because
object listing code did not read nor check blob objects, knowing
that blobs do not contain any further references to other
objects. This commit fixes it with practically unmeasurable
overhead.
I've benched this with
git rev-list --objects --all >/dev/null
in the kernel repository, with three different implementations
of the "check-blob".
- Checking with has_sha1_file() has negligible (unmeasurable)
performance penalty.
- Checking with sha1_object_info() makes it somewhat slower,
perhaps by 5%.
- Checking with read_sha1_file() to cause a fully re-validation
is prohibitively expensive (about 4 times as much runtime).
In my original patch, I had this as a command line option, but
the overhead is small enough that it is not really worth it.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Christian Couder [Tue, 17 Apr 2007 04:51:48 +0000 (06:51 +0200)]
Bisect: rename "t/t6030-bisect-run.sh" to "t/t6030-bisect-porcelain.sh".
[jc: also fix
0a5280a9 that incorrectly changed the title of one test.]
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Christian Couder [Tue, 17 Apr 2007 04:40:50 +0000 (06:40 +0200)]
Bisect: simplify "bisect start" logging.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:32:13 +0000 (12:32 -0400)]
pack-objects: better check_object() performances
With large amount of objects, check_object() is really trashing the pack
sliding map and the filesystem cache. It has a completely random access
pattern especially with old objects where delta replay jumps back and
forth all over the pack.
This patch improves things by:
1) sorting objects by their offset in pack before calling check_object()
so the pack access pattern is linear;
2) recording the object type at add_object_entry() time since it is
already known in most cases;
3) recording the pack offset even for preferred_base objects;
4) avoid calling sha1_object_info() if all possible.
This limits pack accesses to the bare minimum and makes them perfectly
linear.
In the process check_object() was made more clear (to me at least).
Note: I thought about walking the sorted_by_offset list backward in
get_object_details() so if a pack happens to be larger than the available
file cache, then the cache would have been populated with useful data from
the beginning of the pack already when find_deltas() is called. Strangely,
testing (on Linux) showed absolutely no performance difference.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:31:56 +0000 (12:31 -0400)]
add get_size_from_delta()
... which consists of existing code split out of packed_delta_info()
for other callers to use it as well.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:31:31 +0000 (12:31 -0400)]
pack-objects: make in_pack_header_size a variable of its own
It currently aliases delta_size on the principle that reused deltas won't
go through the whole delta matching loop hence delta_size was unused.
This is not true if given delta doesn't find its base in the pack though.
But we need that information even for whole object data reuse.
Well in short the current state looks awful and is prone to bugs. It just
works fine now because try_delta() tests trg_entry->delta before using
trg_entry->delta_size, but that is a bit subtle and I was wondering for a
while why things just worked fine... even if I'm guilty of having
introduced this abomination myself in the first place.
Let's do the sensible thing instead with no ambiguity, which is to have
a separate variable for in_pack_header_size. This might even help future
optimizations.
While at it, let's reorder some struct object_entry members so they all
align well with their own width, regardless of the architecture or the
size of off_t. Some memory saving is to be expected with this alone.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:31:05 +0000 (12:31 -0400)]
pack-objects: get rid of create_final_object_list()
Because we don't have to know the SHA1 h(hence the name) of the pack
up front anymore, let's get rid of yet another global sorted object list
and sort them only in write_index_file(), then compute the object list
SHA1 on the fly.
This has the advantage of saving another chunk of memory, and the sorted
list SHA1 won't be computed needlessly on servers during a fetch.
Of course the cunning plan is also to make write_index_file() much like
the function with the same name in index-pack.c for an eventual easy
sharing.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:30:15 +0000 (12:30 -0400)]
pack-objects: get rid of reuse_cached_pack
This capability is practically never useful, and therefore never tested,
because it is fairly unlikely that the requested pack will be already
available. Furthermore it is of little gain over the ability to reuse
existing pack data.
In fact the ability to change delta type on the fly when reusing delta
data is a nice thing that has almost no cost and allows greater backward
compatibility with a client's capabilities than if the client is blindly
sent a whole pack without any discrimination.
And this "feature" is simply in the way of other cleanups.
Let's get rid of it.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:29:54 +0000 (12:29 -0400)]
pack-objects: clean up list sorting
Get rid of sort_comparator() as it impose a run time double indirect
function call for little compile time type checking gain.
Also get rid of create_sorted_list() as it only has one user which would
as well be just fine doing its sorting locally. Eventually the list of
deltifiable objects might be shorter than the whole object list.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:29:16 +0000 (12:29 -0400)]
pack-objects: rework check_delta_limit usage
Objects that have delta "children" from pack data reuse must consider the
depth of their deepest child when they try to deltify themselves for those
children not to become too deep.
However, in the context of a "thin" pack, the delta children depth was
skipped entirely on the presumption that the pack was always going to be
exploded on the receiving end, hence the delta length wasn't an issue.
Now that we keep received packs as is and reuse pack data when repacking,
those packs do contain delta chains that are longer than expected. Worse,
those delta chain may even grow longer when the pack is further repacked
into another thin pack for a subsequent transmission.
So this patch restores strict delta length even for thin packs, and it
moves check_delta_limit() usage directly in the delta loop where it is
needed. This way the delta_limit can be removed from struct object_entry
as well. Oh and the initial value was wrong too.
The progress_interval() function was moved to a more logical location in
the process.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:28:52 +0000 (12:28 -0400)]
pack-objects: equal objects in size should delta against newer objects
Before finding best delta combinations, we sort objects by name hash,
then by size, then by their position in memory. Then we walk the list
backwards to test delta candidates.
We hope that a bigger size usually means a newer objects. But a bigger
address in memory does not mean a newer object. So the last comparison
must be reversed.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Nicolas Pitre [Mon, 16 Apr 2007 16:28:10 +0000 (12:28 -0400)]
pack-objects: optimize preferred base handling a bit
Let's avoid some cycles when there is no base to test against, and avoid
unnecessary object lookups.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Mon, 16 Apr 2007 23:53:29 +0000 (16:53 -0700)]
Merge branch 'js/wrap-log'
* js/wrap-log:
Fix permissions on test scripts
Fix t4201: accidental arithmetic expansion
shortlog -w: make wrap-line behaviour optional.
Use print_wrapped_text() in shortlog
Alex Riesen [Fri, 13 Apr 2007 20:13:51 +0000 (22:13 +0200)]
Fix permissions on test scripts
Make every test executable. Remove exec-attribute from included shell files,
they can't used standalone anyway.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Alex Riesen [Fri, 13 Apr 2007 20:13:10 +0000 (22:13 +0200)]
Fix t4201: accidental arithmetic expansion
instead of embedded subshell. It actually breaks here (dash as /bin/sh):
t4201-shortlog.sh: 27: Syntax error: Missing '))'
FATAL: Unexpected exit with code 2
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Mon, 16 Apr 2007 23:51:47 +0000 (16:51 -0700)]
send-email: do not leave an empty CC: line if no cc is present.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Linus Torvalds [Mon, 16 Apr 2007 23:05:10 +0000 (16:05 -0700)]
Add support for "commit name decorations" to log family of commands
This adds "--decorate" as a log option, which prints out the ref names
of any commits that are shown.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Linus Torvalds [Mon, 16 Apr 2007 23:03:15 +0000 (16:03 -0700)]
Add a generic "object decorator" interface, and make object refs use it
This allows you to add an arbitrary "decoration" of your choice to any
object. It's a space- and time-efficient way to add information to
arbitrary objects, especially if most objects probably do not have the
decoration.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Mon, 16 Apr 2007 09:54:18 +0000 (02:54 -0700)]
Merge branch 'maint'
* maint:
Have sample update hook not refuse deleting a branch through push.
variable $projectdesc needs to be set before checking against unchanged default.
Update git-annotate/git-blame documentation
Update git-apply documentation
Update git-applymbox documentation
Update git-am documentation
user-manual: use detached head when rewriting history
user-manual: start revising "internals" chapter
user-manual: detached HEAD
user-manual: fix discussion of default clone
Documentation: clarify track/no-track option.
Documentation: clarify git-checkout -f, minor editing
Documentation: minor edits of git-lost-found manpage
Gerrit Pape [Mon, 16 Apr 2007 08:31:35 +0000 (08:31 +0000)]
Have sample update hook not refuse deleting a branch through push.
source ref might be 0000...0000 to delete a branch through git-push,
'git <remote> push :<branch>'. The update hook should not decline this.
Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Gerrit Pape [Mon, 16 Apr 2007 08:30:42 +0000 (08:30 +0000)]
variable $projectdesc needs to be set before checking against unchanged default.
Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Steven Grimm [Mon, 16 Apr 2007 08:17:32 +0000 (01:17 -0700)]
git-rm: Trivial fix for a comment typo.
Signed-off-by: Steven Grimm <koreth@midwinter.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Mon, 16 Apr 2007 06:20:34 +0000 (01:20 -0500)]
Update git-annotate/git-blame documentation
Moved options that pertained to both git-blame and git-annotate to a
common file blame-options.txt.
builtin-blame.c: Removed --compatibility, --long, --time from the
short usage as they are not handled in the code.
Documentation/git-blame.txt: Removed common options to git-annotate.
Added documentation for --score-debug. Removed --compatibility.
Adjusted usage at top to not wrap on 80 columns.
Documentation/git-annotate.txt: Using common options blame-options.txt.
Documentation/blame-options.txt: Added -b note about associated config
option, added --root note about associated config option, added
documentation for --show-stats. Removed --long, --time, --rev-file as
those options do not really exist. Added documentation for -M/-C taking
an optional score argument for detection of moved lines.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Mon, 16 Apr 2007 06:20:40 +0000 (01:20 -0500)]
Update git-apply documentation
Document -v (short form of --verbose). Redo usage
to not wrap on 80 column terminal with typical
settings.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Mon, 16 Apr 2007 06:40:06 +0000 (01:40 -0500)]
Update git-applymbox documentation
Documentation/git-applymbox.txt: updating -u documentation to include
fact that it encodes to the i18n.commitencoding setting, not just utf-8.
Added documentation of -n option to pass -n to git-mailinfo.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Mon, 16 Apr 2007 07:21:31 +0000 (02:21 -0500)]
Update git-am documentation
Documentation/git-am.txt missing several short versions
of options. Added documentation for --resolvemsg=<msg>
command-line option.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:16 +0000 (00:37 -0400)]
user-manual: use detached head when rewriting history
This is slightly simpler if we use a detached head. And it's probably
good to have another example that uses this feature.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:15 +0000 (00:37 -0400)]
user-manual: start revising "internals" chapter
Minor revisions, cross-references.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:14 +0000 (00:37 -0400)]
user-manual: detached HEAD
Add a brief mention of detached HEADs and .git/HEAD.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:13 +0000 (00:37 -0400)]
user-manual: fix discussion of default clone
The name "master" isn't actually quite so special. Also, fix some bad
grammar.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:12 +0000 (00:37 -0400)]
Documentation: clarify track/no-track option.
Fix the description of the --no-track option so it no longer says the
opposite of what was intended. Also mention branch.autosetupmerge
explicitly.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:11 +0000 (00:37 -0400)]
Documentation: clarify git-checkout -f, minor editing
"Force a re-read of everything" doesn't mean much to me.
Also some minor grammar fixes.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
J. Bruce Fields [Mon, 16 Apr 2007 04:37:10 +0000 (00:37 -0400)]
Documentation: minor edits of git-lost-found manpage
Minor improvements to grammar and clarity of lost-found manpage.
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Steven Grimm [Mon, 16 Apr 2007 07:46:48 +0000 (00:46 -0700)]
Add --quiet option to suppress output of "rm" commands for removed files.
Signed-off-by: Steven Grimm <koreth@midwinter.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Michael S. Tsirkin [Mon, 16 Apr 2007 05:51:11 +0000 (08:51 +0300)]
Display the subject of the commit just made.
Useful e.g. to figure out what I did from screen history,
or to make sure subject line is short enough and makes sense
on its own.
Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Andrew Ruder [Mon, 16 Apr 2007 05:35:25 +0000 (00:35 -0500)]
Add policy on user-interface changes
Documentation/SubmittingPatches: Add note that all user interface changes
should include associated documentation updates.
Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Mon, 16 Apr 2007 00:52:07 +0000 (17:52 -0700)]
Merge branch 'maint'
* maint:
Document -g (--walk-reflogs) option of git-log
sscanf/strtoul: parse integers robustly
git-blame: Fix overrun in fake_working_tree_commit()
[PATCH] Improve look-and-feel of the gitk tool.
[PATCH] Teach gitk to use the user-defined UI font everywhere.
Alex Riesen [Sun, 15 Apr 2007 22:36:06 +0000 (00:36 +0200)]
Document -g (--walk-reflogs) option of git-log
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Luiz Fernando N. Capitulino [Sun, 15 Apr 2007 18:51:29 +0000 (15:51 -0300)]
ident.c: Use size_t (instead of int) to store sizes
Signed-off-by: Luiz Fernando N. Capitulino <lcapitulino@mandriva.com.br>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Luiz Fernando N. Capitulino [Sun, 15 Apr 2007 21:40:31 +0000 (18:40 -0300)]
ident.c: Use const qualifier for 'struct passwd' parameters
Signed-off-by: Luiz Fernando N. Capitulino <lcapitulino@mandriva.com.br>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Shawn O. Pearce [Sat, 14 Apr 2007 19:10:48 +0000 (15:10 -0400)]
git-gui: Display the directory basename in the title
By showing the basename of the directory very early in the
title bar I can more easily locate a particular git-gui
session when I have 8 open at once and my Windows taskbar
is overflowing with items.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Shawn O. Pearce [Sun, 15 Apr 2007 04:34:28 +0000 (00:34 -0400)]
Merge branch 'er/ui'
* er/ui:
Always bind the return key to the default button
Do not break git-gui messages into multiple lines.
Improve look-and-feel of the git-gui tool.
Teach git-gui to use the user-defined UI font everywhere.
Allow wish interpreter to be defined with TCLTK_PATH
Jim 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>
Junio C Hamano [Sun, 15 Apr 2007 02:45:16 +0000 (19:45 -0700)]
Merge git://git2./pub/scm/gitk/gitk into maint
* git://git2.kernel.org/pub/scm/gitk/gitk:
[PATCH] Improve look-and-feel of the gitk tool.
[PATCH] Teach gitk to use the user-defined UI font everywhere.
Michael Spang [Sat, 14 Apr 2007 21:26:20 +0000 (17:26 -0400)]
git-blame: Fix overrun in fake_working_tree_commit()
git-blame would overflow commit->buffer when annotating files with long paths.
Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Sat, 14 Apr 2007 11:18:46 +0000 (04:18 -0700)]
Merge branch 'maint'
* maint:
git-quiltimport complaining yet still working
config.txt: Fix grammatical error in description of http.noEPSV
config.txt: Change pserver to server in description of gitcvs.*
config.txt: Document core.autocrlf
config.txt: Document gitcvs.allbinary
Do not default to --no-index when given two directories.
Use rev-list --reverse in git-rebase.sh
Linus Torvalds [Fri, 13 Apr 2007 21:34:18 +0000 (14:34 -0700)]
git-quiltimport complaining yet still working
There were two bugs: "stop_here" doesn't exist, but the bug that causes
this code to trigger in the *first* place is the wrong use of "$dotest".
It should be ".dotest"
This is essentially the same bug introduced by
87ab7992, one was
fixed with
0d38ab25 but this was somehow left behind.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Frank Lichtenheld [Fri, 13 Apr 2007 16:13:42 +0000 (18:13 +0200)]
config.txt: Add gitcvs.db* variables
Adds documentation for gitcvs.{dbname,dbdriver,dbuser,dbpass}
Texts are mostly taken from git-cvsserver.txt whith some
adaptions so that they make more sense out of the context
of the original man page.
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:33 +0000 (18:02 +0200)]
config.txt: Fix grammatical error in description of http.noEPSV
s/doesn't/don't/ since "ftp servers" is plural
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:32 +0000 (18:02 +0200)]
config.txt: Change pserver to server in description of gitcvs.*
These variables apply to the SSH access as well, so don't use
pserver here which might confuse users.
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:31 +0000 (18:02 +0200)]
config.txt: Document core.autocrlf
Text shamelessly stolen from the 1.5.1 release notes.
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:30 +0000 (18:02 +0200)]
config.txt: Document gitcvs.allbinary
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Fri, 13 Apr 2007 10:23:20 +0000 (03:23 -0700)]
Do not default to --no-index when given two directories.
git-diff -- a/ b/ always defaulted to --no-index, primarily
because the function is_in_index() was implemented quite
incorrectly.
Noticed by Patrick Maaß and Simon Schubert independently,
initial patch was provided by Patrick but I fixed it
differently.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Alex Riesen [Fri, 13 Apr 2007 22:19:05 +0000 (00:19 +0200)]
Use rev-list --reverse in git-rebase.sh
...and drop the last perl dependency in the script.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Junio C Hamano [Fri, 13 Apr 2007 04:04:27 +0000 (21:04 -0700)]
Merge branch 'jc/cherry'
* jc/cherry:
Documentation: --cherry-pick
git-log --cherry-pick A...B
Refactor patch-id filtering out of git-cherry and git-format-patch.
Add %m to '--pretty=format:'
Junio C Hamano [Fri, 13 Apr 2007 04:04:09 +0000 (21:04 -0700)]
Merge branch 'maint'
* maint:
handle_options in git wrapper miscounts the options it handled.
Matthias Lederhofer [Thu, 12 Apr 2007 18:52:03 +0000 (20:52 +0200)]
handle_options in git wrapper miscounts the options it handled.
handle_options did not count the number of used arguments
correctly. When --git-dir was used the extra argument was
not added to the number of handled arguments.
Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>