gitweb.git
Merge part of np/deltaJunio C Hamano Tue, 28 Feb 2006 09:15:29 +0000 (01:15 -0800)

Merge part of np/delta

Merge branch 'lt/apply' into nextJunio C Hamano Tue, 28 Feb 2006 09:14:56 +0000 (01:14 -0800)

Merge branch 'lt/apply' into next

* lt/apply:
git-apply: war on whitespace -- finishing touches.
git-apply --whitespace=nowarn

git-apply: war on whitespace -- finishing touches.Junio C Hamano Tue, 28 Feb 2006 09:12:52 +0000 (01:12 -0800)

git-apply: war on whitespace -- finishing touches.

This changes the default --whitespace policy to nowarn when we
are only getting --stat, --summary etc. IOW when not applying
the patch. When applying the patch, the default is warn (spit
out warning message but apply the patch).

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

diff-delta: bound hash list length to avoid O(m*n)... Nicolas Pitre Tue, 28 Feb 2006 04:09:55 +0000 (23:09 -0500)

diff-delta: bound hash list length to avoid O(m*n) behavior

The diff-delta code can exhibit O(m*n) behavior with some patological
data set where most hash entries end up in the same hash bucket.

The latest code rework reduced the block size making it particularly
vulnerable to this issue, but the issue was always there and can be
triggered regardless of the block size.

This patch does two things:

1) the hashing has been reworked to offer a better distribution to
atenuate the problem a bit, and

2) a limit is imposed to the number of entries that can exist in the
same hash bucket.

Because of the above the code is a bit more expensive on average, but
the problematic samples used to diagnoze the issue are now orders of
magnitude less expensive to process with only a slight loss in
compression.

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

Revert "Revert "diff-delta: produce optimal pack data""Junio C Hamano Tue, 28 Feb 2006 05:37:56 +0000 (21:37 -0800)

Revert "Revert "diff-delta: produce optimal pack data""

git-apply --whitespace=nowarnJunio C Hamano Tue, 28 Feb 2006 01:07:16 +0000 (17:07 -0800)

git-apply --whitespace=nowarn

Andrew insists --whitespace=warn should be the default, and I
tend to agree. This introduces --whitespace=warn, so if your
project policy is more lenient, you can squelch them by having
apply.whitespace=nowarn in your configuration file.

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

apply --whitespace: configuration option.Junio C Hamano Mon, 27 Feb 2006 22:47:45 +0000 (14:47 -0800)

apply --whitespace: configuration option.

The new configuration option apply.whitespace can take one of
"warn", "error", "error-all", or "strip". When git-apply is run
to apply the patch to the index, they are used as the default
value if there is no command line --whitespace option.

Andrew can now tell people who feed him git trees to update to
this version and say:

git repo-config apply.whitespace error

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

apply: squelch excessive errors and --whitespace=error-allJunio C Hamano Mon, 27 Feb 2006 22:16:30 +0000 (14:16 -0800)

apply: squelch excessive errors and --whitespace=error-all

This by default makes --whitespace=warn, error, and strip to
warn only the first 5 additions of trailing whitespaces. A new
option --whitespace=error-all can be used to view all of them
before applying.

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

apply --whitespace fixes and enhancements.Junio C Hamano Mon, 27 Feb 2006 02:13:25 +0000 (18:13 -0800)

apply --whitespace fixes and enhancements.

In addition to fixing obvious command line parsing bugs in the
previous round, this changes the following:

* Adds "--whitespace=strip". This applies after stripping the
new trailing whitespaces introduced to the patch.

* The output error message format is changed to say
"patch-filename:linenumber:contents of the line". This makes
it similar to typical compiler error message format, and
helps C-x ` (next-error) in Emacs compilation buffer.

* --whitespace=error and --whitespace=warn do not stop at the
first error. We might want to limit the output to say first
20 such lines to prevent cluttering, but on the other hand if
you are willing to hand-fix after inspecting them, getting
everything with a single run might be easier to work with.
After all, somebody has to do the clean-up work somewhere.

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

The war on trailing whitespaceLinus Torvalds Sun, 26 Feb 2006 17:29:00 +0000 (09:29 -0800)

The war on trailing whitespace

On Sat, 25 Feb 2006, Andrew Morton wrote:
>
> I'd suggest a) git will simply refuse to apply such a patch unless given a
> special `forcing' flag, b) even when thus forced, it will still warn and c)
> with a different flag, it will strip-then-apply, without generating a
> warning.

This doesn't do the "strip-then-apply" thing, but it allows you to make
git-apply generate a warning or error on extraneous whitespace.

Use --whitespace=warn to warn, and (surprise, surprise) --whitespace=error
to make it a fatal error to have whitespace at the end.

Totally untested, of course. But it compiles, so it must be fine.

HOWEVER! Note that this literally will check every single patch-line with
"+" at the beginning. Which means that if you fix a simple typo, and the
line had a space at the end before, and you didn't remove it, that's still
considered a "new line with whitespace at the end", even though obviously
the line wasn't really new.

I assume this is what you wanted, and there isn't really any sane
alternatives (you could make the warning activate only for _pure_
additions with no deletions at all in that hunk, but that sounds a bit
insane).

Linus

git-apply --whitespace=nowarnJunio C Hamano Tue, 28 Feb 2006 01:07:16 +0000 (17:07 -0800)

git-apply --whitespace=nowarn

Andrew insists --whitespace=warn should be the default, and I
tend to agree. This introduces --whitespace=warn, so if your
project policy is more lenient, you can squelch them by having
apply.whitespace=nowarn in your configuration file.

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

Merge branch 'master' into nextJunio C Hamano Mon, 27 Feb 2006 23:54:36 +0000 (15:54 -0800)

Merge branch 'master' into next

* master:
Merge part of kh/svnimport branch into master
contrib/git-svn: correct commit example in manpage
contrib/git-svn: tell the user to not modify git-svn-HEAD directly
gitview: Remove trailing white space
gitview: Fix the encoding related bug
git-format-patch: Always add a blank line between headers and body.
combine-diff: Honour -z option correctly.
combine-diff: Honour --full-index.

Merge branch 'lt/rev-list' into nextJunio C Hamano Mon, 27 Feb 2006 23:48:17 +0000 (15:48 -0800)

Merge branch 'lt/rev-list' into next

* lt/rev-list:
Splitting rev-list into revisions lib, end of beginning.

Merge branch 'lt/apply' into nextJunio C Hamano Mon, 27 Feb 2006 23:48:13 +0000 (15:48 -0800)

Merge branch 'lt/apply' into next

* lt/apply:
apply --whitespace: configuration option.
apply: squelch excessive errors and --whitespace=error-all

Merge branch 'kh/svnimport' into nextJunio C Hamano Mon, 27 Feb 2006 23:48:06 +0000 (15:48 -0800)

Merge branch 'kh/svnimport' into next

* kh/svnimport:
Save username -> Full Name <email@addr.es> map file
Let git-svnimport's author file use same syntax as git-cvsimport's

Merge part of kh/svnimport branch into masterJunio C Hamano Mon, 27 Feb 2006 23:46:39 +0000 (15:46 -0800)

Merge part of kh/svnimport branch into master

contrib/git-svn: correct commit example in manpageEric Wong Mon, 27 Feb 2006 20:55:45 +0000 (12:55 -0800)

contrib/git-svn: correct commit example in manpage

Thanks to Nicolas Vilz <niv@iaglans.de> for noticing this.

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

Save username -> Full Name <email@addr.es> map fileKarl Hasselström Mon, 27 Feb 2006 23:08:19 +0000 (00:08 +0100)

Save username -> Full Name <email@addr.es> map file

When the user specifies a username -> Full Name <email@addr.es> map
file with the -A option, save a copy of that file as
$git_dir/svn-authors. When running git-svnimport with an existing GIT
directory, use $git_dir/svn-authors (if it exists) unless a file was
explicitly specified with -A.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Let git-svnimport's author file use same syntax as... Karl Hasselström Mon, 27 Feb 2006 23:08:15 +0000 (00:08 +0100)

Let git-svnimport's author file use same syntax as git-cvsimport's

git-cvsimport uses a username => Full Name <email@addr.es> mapping
file with this syntax:

kha=Karl Hasselström <kha@treskal.com>

Since there is no reason to use another format for git-svnimport, use
the same format.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

apply --whitespace: configuration option.Junio C Hamano Mon, 27 Feb 2006 22:47:45 +0000 (14:47 -0800)

apply --whitespace: configuration option.

The new configuration option apply.whitespace can take one of
"warn", "error", "error-all", or "strip". When git-apply is run
to apply the patch to the index, they are used as the default
value if there is no command line --whitespace option.

Andrew can now tell people who feed him git trees to update to
this version and say:

git repo-config apply.whitespace error

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

apply: squelch excessive errors and --whitespace=error-allJunio C Hamano Mon, 27 Feb 2006 22:16:30 +0000 (14:16 -0800)

apply: squelch excessive errors and --whitespace=error-all

This by default makes --whitespace=warn, error, and strip to
warn only the first 5 additions of trailing whitespaces. A new
option --whitespace=error-all can be used to view all of them
before applying.

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

contrib/git-svn: tell the user to not modify git-svn... Eric Wong Mon, 27 Feb 2006 19:04:02 +0000 (11:04 -0800)

contrib/git-svn: tell the user to not modify git-svn-HEAD directly

As a rule, interface branches to different SCMs should never be modified
directly by the user. They are used exclusively for talking to the
foreign SCM.

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

Splitting rev-list into revisions lib, end of beginning.Linus Torvalds Mon, 27 Feb 2006 16:54:36 +0000 (08:54 -0800)

Splitting rev-list into revisions lib, end of beginning.

This makes the rewrite easier to validate in that revision flag
parsing and warlking part are now all in rev_info structure.

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

gitview: Remove trailing white spaceAneesh Kumar K.V Mon, 27 Feb 2006 17:12:07 +0000 (22:42 +0530)

gitview: Remove trailing white space

Do the cleanup using Dave jones vim script

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitview: Fix the encoding related bugAneesh Kumar K.V Mon, 27 Feb 2006 15:55:13 +0000 (21:25 +0530)

gitview: Fix the encoding related bug

Get the encoding information from repository and convert it to utf-8 before
passing to gtk.TextBuffer.set_text. gtk.TextBuffer.set_text work only with utf-8

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-format-patch: Always add a blank line between heade... Alexandre Julliard Mon, 27 Feb 2006 13:09:56 +0000 (14:09 +0100)

git-format-patch: Always add a blank line between headers and body.

If the second line of the commit message isn't empty, git-format-patch
needs to add an empty line in order to generate a properly formatted
mail. Otherwise git-rebase drops the rest of the commit message.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

combine-diff: Honour -z option correctly.Mark Wooding Mon, 27 Feb 2006 12:52:52 +0000 (12:52 +0000)

combine-diff: Honour -z option correctly.

Combined diffs don't null terminate things in the same way as standard
diffs. This is presumably wrong.

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>

combine-diff: Honour --full-index.Mark Wooding Mon, 27 Feb 2006 12:52:50 +0000 (12:52 +0000)

combine-diff: Honour --full-index.

For some reason, combined diffs don't honour the --full-index flag when
emitting patches. Fix this.

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'kh/svnimport' into nextJunio C Hamano Mon, 27 Feb 2006 05:55:16 +0000 (21:55 -0800)

Merge branch 'kh/svnimport' into next

* kh/svnimport:
svnimport: Read author names and emails from a file

Merge branch 'lt/apply' into nextJunio C Hamano Mon, 27 Feb 2006 05:55:08 +0000 (21:55 -0800)

Merge branch 'lt/apply' into next

* lt/apply:
apply --whitespace fixes and enhancements.
The war on trailing whitespace
svnimport: Convert the svn:ignore property
svnimport: Convert executable flag
svnimport: Mention -r in usage summary
Make git diff-generation use a simpler spawn-like interface

apply --whitespace fixes and enhancements.Junio C Hamano Mon, 27 Feb 2006 02:13:25 +0000 (18:13 -0800)

apply --whitespace fixes and enhancements.

In addition to fixing obvious command line parsing bugs in the
previous round, this changes the following:

* Adds "--whitespace=strip". This applies after stripping the
new trailing whitespaces introduced to the patch.

* The output error message format is changed to say
"patch-filename:linenumber:contents of the line". This makes
it similar to typical compiler error message format, and
helps C-x ` (next-error) in Emacs compilation buffer.

* --whitespace=error and --whitespace=warn do not stop at the
first error. We might want to limit the output to say first
20 such lines to prevent cluttering, but on the other hand if
you are willing to hand-fix after inspecting them, getting
everything with a single run might be easier to work with.
After all, somebody has to do the clean-up work somewhere.

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

The war on trailing whitespaceLinus Torvalds Sun, 26 Feb 2006 17:29:00 +0000 (09:29 -0800)

The war on trailing whitespace

On Sat, 25 Feb 2006, Andrew Morton wrote:
>
> I'd suggest a) git will simply refuse to apply such a patch unless given a
> special `forcing' flag, b) even when thus forced, it will still warn and c)
> with a different flag, it will strip-then-apply, without generating a
> warning.

This doesn't do the "strip-then-apply" thing, but it allows you to make
git-apply generate a warning or error on extraneous whitespace.

Use --whitespace=warn to warn, and (surprise, surprise) --whitespace=error
to make it a fatal error to have whitespace at the end.

Totally untested, of course. But it compiles, so it must be fine.

HOWEVER! Note that this literally will check every single patch-line with
"+" at the beginning. Which means that if you fix a simple typo, and the
line had a space at the end before, and you didn't remove it, that's still
considered a "new line with whitespace at the end", even though obviously
the line wasn't really new.

I assume this is what you wanted, and there isn't really any sane
alternatives (you could make the warning activate only for _pure_
additions with no deletions at all in that hunk, but that sounds a bit
insane).

Linus

Merge branch 'lt/rev-list' into nextJunio C Hamano Mon, 27 Feb 2006 05:53:56 +0000 (21:53 -0800)

Merge branch 'lt/rev-list' into next

* lt/rev-list:
rev-list split: minimum fixup.

svnimport: Read author names and emails from a fileKarl Hasselström Sun, 26 Feb 2006 05:11:31 +0000 (06:11 +0100)

svnimport: Read author names and emails from a file

Read a file with lines on the form

username User's Full Name <email@addres.org>

and use "User's Full Name <email@addres.org>" as the GIT author and
committer for Subversion commits made by "username". If encountering a
commit made by a user not in the list, abort.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

svnimport: Convert the svn:ignore propertyKarl Hasselström Sun, 26 Feb 2006 05:11:29 +0000 (06:11 +0100)

svnimport: Convert the svn:ignore property

Put the value of the svn:ignore property in a regular file when
converting a Subversion repository to GIT. The Subversion and GIT
ignore syntaxes are similar enough that it often just works to set the
filename to .gitignore and do nothing else.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

svnimport: Convert executable flagKarl Hasselström Sun, 26 Feb 2006 05:11:27 +0000 (06:11 +0100)

svnimport: Convert executable flag

Convert the svn:executable property to file mode 755 when converting
an SVN repository to GIT.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

svnimport: Mention -r in usage summaryKarl Hasselström Sun, 26 Feb 2006 05:11:24 +0000 (06:11 +0100)

svnimport: Mention -r in usage summary

I added the -r option to git-svnimport some time ago, but forgot to
update the usage summary in the documentation.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

rev-list split: minimum fixup.Junio C Hamano Mon, 27 Feb 2006 05:19:14 +0000 (21:19 -0800)

rev-list split: minimum fixup.

This fixes "the other end has commit X but since then we tagged
that commit with tag T, and he says he wants T -- what is the
list of objects we need to send him?" question:

git-rev-list --objects ^X T

We ended up sending everything since the beginning of time X-<.

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

Make git diff-generation use a simpler spawn-like interfaceLinus Torvalds Sun, 26 Feb 2006 23:51:24 +0000 (15:51 -0800)

Make git diff-generation use a simpler spawn-like interface

Instead of depending of fork() and execve() and doing things in between
the two, make the git diff functions do everything up front, and then do
a single "spawn_prog()" invocation to run the actual external diff
program (if any is even needed).

This actually ends up simplifying the code, and should make it much
easier to make it efficient under broken operating systems (read: Windows).

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

Merge branch 'lt/rev-list' into nextJunio C Hamano Sun, 26 Feb 2006 23:33:49 +0000 (15:33 -0800)

Merge branch 'lt/rev-list' into next

* lt/rev-list:
First cut at libifying revlist generation
Merge branch 'maint'
sample hooks template.
Teach the "git" command to handle some commands internally
Use setenv(), fix warnings
contrib/git-svn: version 0.10.0
contrib/git-svn: optimize sequential commits to svn
contrib/git-svn: add show-ignore command
annotate: Use qx{} for pipes on activestate.
annotate: Convert all -| calls to use a helper open_pipe().
annotate: Handle dirty state and arbitrary revisions.
git-fetch: print the new and old ref when fast-forwarding

First cut at libifying revlist generationLinus Torvalds Sun, 26 Feb 2006 00:19:46 +0000 (16:19 -0800)

First cut at libifying revlist generation

This really just splits things up partially, and creates the
interface to set things up by parsing the command line.

No real code changes so far, although the parsing of filenames is a bit
stricter. In particular, if there is a "--", then we do not accept any
filenames before it, and if there isn't any "--", then we check that _all_
paths listed are valid, not just the first one.

The new argument parsing automatically also gives us "--default" and
"--not" handling as in git-rev-parse.

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

Merge branch 'maint'Junio C Hamano Sun, 26 Feb 2006 23:25:52 +0000 (15:25 -0800)

Merge branch 'maint'

* maint:
sample hooks template.

sample hooks template.Junio C Hamano Sun, 26 Feb 2006 23:16:41 +0000 (15:16 -0800)

sample hooks template.

These two sample hooks try to detect and use the corresponding
commit hook from the same repository. However, they forgot to
set up GIT_DIR for their own use, so was not in effect.

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

Teach the "git" command to handle some commands internallyLinus Torvalds Sun, 26 Feb 2006 20:34:51 +0000 (12:34 -0800)

Teach the "git" command to handle some commands internally

This is another patch in the "prepare to do more in C" series, where the
git wrapper command is taught about the notion of handling some
functionality internally.

Right now, the only internal commands are "version" and "help", but the
point being that we can now easily extend it to handle some of the trivial
scripts internally. Things like "git log" and "git diff" wouldn't need
separate external scripts any more.

This also implies that to support the old "git-log" and "git-diff" syntax,
the "git" wrapper now automatically looks at the name it was executed as,
and if it is "git-xxxx", it will assume that it is to internally do what
"git xxxx" would do.

In other words, you can (once you implement an internal command) soft- or
hard-link that command to the "git" wrapper command, and it will do the
right thing, whether you use the "git xxxx" or the "git-xxxx" format.

There's one other change: the search order for external programs is
modified slightly, so that the first entry remains GIT_EXEC_DIR, but the
second entry is the same directory as the git wrapper itself was executed
out of - if we can figure it out from argv[0], of course.

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

Use setenv(), fix warningsTimo Hirvonen Sun, 26 Feb 2006 15:13:46 +0000 (17:13 +0200)

Use setenv(), fix warnings

- Fix -Wundef -Wold-style-definition warnings
- Make pll_free() static

[jc: original patch by Timo had another unrelated bits:

- Use setenv() instead of putenv()

I'm postponing that part for now.]

Signed-off-by: Timo Hirvonen <tihirvon@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

contrib/git-svn: version 0.10.0Eric Wong Sun, 26 Feb 2006 10:22:27 +0000 (02:22 -0800)

contrib/git-svn: version 0.10.0

New features deserve an increment of the minor version. This will very
likely become 1.0.0 unless release-critical bugs are found.

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

contrib/git-svn: optimize sequential commits to svnEric Wong Sun, 26 Feb 2006 10:22:27 +0000 (02:22 -0800)

contrib/git-svn: optimize sequential commits to svn

Avoid running 'svn up' to a previous revision if we know the
revision we just committed is the first descendant of the
revision we came from.

This reduces the time to do a series of commits by about 25%.

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

contrib/git-svn: add show-ignore commandEric Wong Sun, 26 Feb 2006 10:22:27 +0000 (02:22 -0800)

contrib/git-svn: add show-ignore command

Recursively finds and lists the svn:ignore property on
directories. The output is suitable for appending to the
$GIT_DIR/info/exclude file.

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

annotate: Use qx{} for pipes on activestate.Ryan Anderson Sun, 26 Feb 2006 21:09:12 +0000 (16:09 -0500)

annotate: Use qx{} for pipes on activestate.

Note: This needs someone to tell me what the value of $^O is on ActiveState.

Signed-off-by: Ryan Anderson <ryan@michonline.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

annotate: Convert all -| calls to use a helper open_pipe().Ryan Anderson Sun, 26 Feb 2006 03:02:05 +0000 (22:02 -0500)

annotate: Convert all -| calls to use a helper open_pipe().

When we settle on a solution for ActiveState's forking issues, all
compatibility checks can be handled inside this one function.

Also, fixed an abuse of global variables in the process of cleaning this up.

Signed-off-by: Ryan Anderson <ryan@michonline.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

annotate: Handle dirty state and arbitrary revisions.Ryan Anderson Sun, 26 Feb 2006 01:48:33 +0000 (20:48 -0500)

annotate: Handle dirty state and arbitrary revisions.

Also, use Getopt::Long and only process each rev once.

(Thanks to Morten Welinder for spotting the performance problems.)

Signed-off-by: Ryan Anderson <ryan@michonline.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-fetch: print the new and old ref when fast-forwardingLukas Sandström Sat, 25 Feb 2006 11:20:13 +0000 (12:20 +0100)

git-fetch: print the new and old ref when fast-forwarding

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

Merge branch 'master' into nextJunio C Hamano Sat, 25 Feb 2006 07:47:48 +0000 (23:47 -0800)

Merge branch 'master' into next

* master:
fix warning from pack-objects.c
Merge branches 'jc/rev-list' and 'jc/pack-thin'
gitview: Fix the graph display .

fix warning from pack-objects.cLuck, Tony Thu, 23 Feb 2006 22:42:39 +0000 (14:42 -0800)

fix warning from pack-objects.c

When compiling on ia64 I get this warning (from gcc 3.4.3):

gcc -o pack-objects.o -c -g -O2 -Wall -DSHA1_HEADER='<openssl/sha.h>' pack-objects.c
pack-objects.c: In function `pack_revindex_ix':
pack-objects.c:94: warning: cast from pointer to integer of different size

A double cast (first to long, then to int) shuts gcc up, but is there
a better way?

[jc: Andreas Ericsson suggests to use ulong instead. ]

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

Merge branches 'jc/rev-list' and 'jc/pack-thin'Junio C Hamano Sat, 25 Feb 2006 05:55:23 +0000 (21:55 -0800)

Merge branches 'jc/rev-list' and 'jc/pack-thin'

* jc/rev-list:
rev-list --objects: use full pathname to help hashing.
rev-list --objects-edge: remove duplicated edge commit output.
rev-list --objects-edge

* jc/pack-thin:
pack-objects: hash basename and direname a bit differently.
pack-objects: allow "thin" packs to exceed depth limits
pack-objects: use full pathname to help hashing with "thin" pack.
pack-objects: thin pack micro-optimization.
Use thin pack transfer in "git fetch".
Add git-push --thin.
send-pack --thin: use "thin pack" delta transfer.
Thin pack - create packfile with missing delta base.

Conflicts:

pack-objects.c (taking "next")
send-pack.c (taking "next")

Merge branch 'master' into nextJunio C Hamano Sat, 25 Feb 2006 03:01:02 +0000 (19:01 -0800)

Merge branch 'master' into next

* master:
Merge branches 'jc/rev-list' and 'jc/pack-thin'
gitview: Code cleanup
Add missing programs to ignore list
git ls files recursively show ignored files
Build and install git-mailinfo.
gitview: Bump the rev
gitview: Fix DeprecationWarning

Merge branches 'jc/rev-list' and 'jc/pack-thin'Junio C Hamano Sat, 25 Feb 2006 02:55:25 +0000 (18:55 -0800)

Merge branches 'jc/rev-list' and 'jc/pack-thin'

* jc/rev-list:
rev-list --objects: use full pathname to help hashing.
rev-list --objects-edge: remove duplicated edge commit output.
rev-list --objects-edge

* jc/pack-thin:
pack-objects: hash basename and direname a bit differently.
pack-objects: allow "thin" packs to exceed depth limits
pack-objects: use full pathname to help hashing with "thin" pack.
pack-objects: thin pack micro-optimization.
Use thin pack transfer in "git fetch".
Add git-push --thin.
send-pack --thin: use "thin pack" delta transfer.
Thin pack - create packfile with missing delta base.

Conflicts:

pack-objects.c (manual adjustment for thin pack needed)
send-pack.c

gitview: Fix the graph display .Aneesh Kumar K.V Fri, 24 Feb 2006 16:27:51 +0000 (21:57 +0530)

gitview: Fix the graph display .

This fix all the known issue with the graph display
The bug need to be explained graphically

|
a
This line need not be there ---->| \
b |
| /
c

c is parent of a and all a,b and c are placed on the same line and b is child of c
With my last checkin I added a seperate line to indicate that a is
connected to c. But then we had the line connecting a and b which should
not be ther. This changes fixes the same bug

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitview: Code cleanupAneesh Kumar K.V Fri, 24 Feb 2006 16:19:54 +0000 (21:49 +0530)

gitview: Code cleanup

Rearrange the code little bit so that it is easier to read

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add missing programs to ignore listShawn Pearce Fri, 24 Feb 2006 22:51:15 +0000 (17:51 -0500)

Add missing programs to ignore list

Added recently added programs to the default exclude list.

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

git ls files recursively show ignored filesShawn Pearce Fri, 24 Feb 2006 22:02:34 +0000 (17:02 -0500)

git ls files recursively show ignored files

Make git-ls-files --others --ignored recurse into non-excluded
subdirectories.

Typically when asking git-ls-files to display all files which are
ignored by one or more exclude patterns one would want it to recurse
into subdirectories which are not themselves excluded to see if
there are any excluded files contained within those subdirectories.

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

Build and install git-mailinfo.Junio C Hamano Sat, 25 Feb 2006 00:16:10 +0000 (16:16 -0800)

Build and install git-mailinfo.

The merge 712b1dd389ad5bcdbaab0279641f0970702fc1f1 was done
incorrectly, and lost this program from Makefile.

Big thanks go to Tony Luck for noticing it, and Linus for
diagnosing it.

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

gitview: Bump the revAneesh Kumar Fri, 24 Feb 2006 08:38:35 +0000 (14:08 +0530)

gitview: Bump the rev

Make the 0.7 release

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitview: Fix DeprecationWarningAneesh Kumar Fri, 24 Feb 2006 08:32:32 +0000 (14:02 +0530)

gitview: Fix DeprecationWarning

DeprecationWarning: integer argument expected, got float

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'master' into nextJunio C Hamano Fri, 24 Feb 2006 10:22:01 +0000 (02:22 -0800)

Merge branch 'master' into next

* master:
Merge fixes early for next maint series.
Merge branch 'fix' into maint
git-am: do not allow empty commits by mistake.

Merge fixes early for next maint series.Junio C Hamano Fri, 24 Feb 2006 10:21:28 +0000 (02:21 -0800)

Merge fixes early for next maint series.

Merge branch 'fix' into maintJunio C Hamano Fri, 24 Feb 2006 10:21:00 +0000 (02:21 -0800)

Merge branch 'fix' into maint

* fix:
git-am: do not allow empty commits by mistake.

Merge branches 'jc/rev-list' and 'jc/pack-thin' into... Junio C Hamano Fri, 24 Feb 2006 09:56:38 +0000 (01:56 -0800)

Merge branches 'jc/rev-list' and 'jc/pack-thin' into next

* jc/rev-list:
rev-list --objects: use full pathname to help hashing.

* jc/pack-thin:
pack-objects: hash basename and direname a bit differently.
pack-objects: allow "thin" packs to exceed depth limits
pack-objects: use full pathname to help hashing with "thin" pack.

Merge fix bits from jc/rev-listJunio C Hamano Fri, 24 Feb 2006 09:33:57 +0000 (01:33 -0800)

Merge fix bits from jc/rev-list

Merge branch 'np/delta' into nextJunio C Hamano Fri, 24 Feb 2006 09:30:04 +0000 (01:30 -0800)

Merge branch 'np/delta' into next

* np/delta:
Revert "diff-delta: produce optimal pack data"
Tweak break/merge score to adjust to the new delta generation code.
count-delta: fix counting of copied source.

Revert "diff-delta: produce optimal pack data"Junio C Hamano Fri, 24 Feb 2006 08:54:59 +0000 (00:54 -0800)

Revert "diff-delta: produce optimal pack data"

This reverts 6b7d25d97bdb8a26719f90d17ff5c9720be68762 commit.

It turns out that the new algorithm has a really bad corner
case, that literally spends minutes for inputs that takes less
than a quater seconds to delta with the old algorithm. The
resulting delta is 50% smaller which is admirable, but the
performance degradation is simply unacceptable for unconditional
use.

Some example cases are these blobs in Linux 2.6 repository:

4917ec509720a42846d513addc11cbd25e0e3c4f
9af06ba723df75fed49f7ccae5b6c9c34bc5115f
dfc9cd58dc065d17030d875d3fea6e7862ede143

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

Merge fixes from masterJunio C Hamano Fri, 24 Feb 2006 09:14:41 +0000 (01:14 -0800)

Merge fixes from master

pack-objects: hash basename and direname a bit differently.Junio C Hamano Fri, 24 Feb 2006 07:27:49 +0000 (23:27 -0800)

pack-objects: hash basename and direname a bit differently.

...so that "Makefile"s from different revs are sorted together,
separate from "t/Makefile"s, but close enough.

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

rev-list --objects: use full pathname to help hashing.Junio C Hamano Thu, 23 Feb 2006 06:10:24 +0000 (22:10 -0800)

rev-list --objects: use full pathname to help hashing.

This helps to group the same files from different revs together,
while spreading files with the same basename in different
directories, to help pack-object.

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

rev-list --objects-edge: remove duplicated edge commit... Junio C Hamano Fri, 24 Feb 2006 07:44:15 +0000 (23:44 -0800)

rev-list --objects-edge: remove duplicated edge commit output.

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

pack-objects: allow "thin" packs to exceed depth limitsJunio C Hamano Fri, 24 Feb 2006 07:04:52 +0000 (23:04 -0800)

pack-objects: allow "thin" packs to exceed depth limits

When creating a new pack to be used in .git/objects/pack/
directory, we carefully count the depth of deltified objects to
be reused, so that the generated pack does not to exceed the
specified depth limit for runtime efficiency. However, when we
are generating a thin pack that does not contain base objects,
such a pack can only be used during network transfer that is
expanded on the other end upon reception, so being careful and
artificially cutting the delta chain does not buy us anything
except increased bandwidth requirement. This patch disables the
delta chain depth limit check when reusing an existing delta.

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

Merge branch 'ar/win'Junio C Hamano Fri, 24 Feb 2006 06:35:55 +0000 (22:35 -0800)

Merge branch 'ar/win'

* ar/win:
PATCH: simplify calls to git programs in git-fmt-merge-msg

Merge branch 'jc/send-insane-refs'Junio C Hamano Fri, 24 Feb 2006 06:34:39 +0000 (22:34 -0800)

Merge branch 'jc/send-insane-refs'

* jc/send-insane-refs:
send-pack: do not give up when remote has insanely large number of refs.

Merge fixes early for next maint series.Junio C Hamano Fri, 24 Feb 2006 06:27:03 +0000 (22:27 -0800)

Merge fixes early for next maint series.

Merge branches 'jc/fix-co-candy', 'jc/fix-rename-leak... Junio C Hamano Fri, 24 Feb 2006 06:25:32 +0000 (22:25 -0800)

Merge branches 'jc/fix-co-candy', 'jc/fix-rename-leak' and 'ar/fix-win' into maint

* jc/fix-co-candy:
checkout - eye candy.

* jc/fix-rename-leak:
diffcore-rename: plug memory leak.

* ar/fix-win:
fix t5600-clone-fail-cleanup.sh on windows

Merge branch 'ak/gitview'Junio C Hamano Fri, 24 Feb 2006 06:20:30 +0000 (22:20 -0800)

Merge branch 'ak/gitview'

* ak/gitview:
gitview: Display the lines joining commit nodes clearly.

gitview: Display the lines joining commit nodes clearly.Aneesh Kumar K.V Thu, 23 Feb 2006 19:29:42 +0000 (00:59 +0530)

gitview: Display the lines joining commit nodes clearly.

Since i wanted to limit the graph box size i was resetting
the window after an index of 5. This result in line joining
commit nodes to pass over nodes which are not related. The
changes fixes the same

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-am: do not allow empty commits by mistake.Junio C Hamano Fri, 24 Feb 2006 06:14:47 +0000 (22:14 -0800)

git-am: do not allow empty commits by mistake.

Running "git-am --resolved" without doing anything can create an empty
commit. Prevent it.

Thanks for Eric W. Biederman for spotting this.

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

Tweak break/merge score to adjust to the new delta... Junio C Hamano Fri, 24 Feb 2006 01:02:56 +0000 (17:02 -0800)

Tweak break/merge score to adjust to the new delta generation code.

This lowers the default merge threshold score to 75% from
earlier 80%. The break threshold stays the same at 50% for now,
but we might want to revisit it (and the rename detection limit
as well).

* break score: this much edit (both insertion of new material
and deletion of old material) needs to be there in the file
before we consider this _might_ be a rewrite and break the
filepair.

* merge score: after a filepair is broken by the above criteria
and goes through rename detection, if their pieces did not
match with other files as rename/copy, we merge them back
into one as if nothing happened. If the filepair had at
least this much deletion of old material, however, we say
this is completely rewritten with dissimilarity index X% when
we do so.

The updated delta code by Nico is so good that what we earlier
thought to be complete rewrite now reuses a lot more from the
source material (reducing the counted "delete"), so this
adjustment is needed to keep the perceived behaviour similar to
what we had earlier.

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

count-delta: fix counting of copied source.Junio C Hamano Thu, 23 Feb 2006 10:58:37 +0000 (02:58 -0800)

count-delta: fix counting of copied source.

The previous one wrongly coalesced a span with the next one
even though the span being added does not reach it.

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

PATCH: simplify calls to git programs in git-fmt-merge-msgAlex Riesen Thu, 23 Feb 2006 10:26:46 +0000 (11:26 +0100)

PATCH: simplify calls to git programs in git-fmt-merge-msg

It also makes it work on ActiveState Perl.

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

fix t5600-clone-fail-cleanup.sh on windowsAlex Riesen Thu, 23 Feb 2006 11:25:20 +0000 (12:25 +0100)

fix t5600-clone-fail-cleanup.sh on windows

In windows you cannot remove current or opened directory,
an opened file, a running program, a loaded library, etc...

[jc: signoffs? With a minor quoting fix.]

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

Merge part of pack-thin branchJunio C Hamano Thu, 23 Feb 2006 11:00:59 +0000 (03:00 -0800)

Merge part of pack-thin branch

Merge branch 'np/delta' into nextJunio C Hamano Thu, 23 Feb 2006 10:59:24 +0000 (02:59 -0800)

Merge branch 'np/delta' into next

* np/delta:
count-delta: tweak counting of copied source material.
diff-delta: produce optimal pack data

count-delta: tweak counting of copied source material.Junio C Hamano Thu, 23 Feb 2006 10:58:37 +0000 (02:58 -0800)

count-delta: tweak counting of copied source material.

With the finer grained delta algorithm, count-delta algorithm
started overcounting copied source material, since the new delta
output tends to reuse the same source range more than once and
more aggressively. This broke an earlier assumption that the
number of bytes copied out from the source buffer is a good
approximation how much source material is actually remaining in
the result.

This uses fairly inefficient algorithm to keep track of ranges
of source material that are actually copied out to the
destination buffer. With this tweak, the obvious rename/break
detection tests in the testsuite start to work again.

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

pack-objects: use full pathname to help hashing with... Junio C Hamano Thu, 23 Feb 2006 06:10:24 +0000 (22:10 -0800)

pack-objects: use full pathname to help hashing with "thin" pack.

This uses the same hashing algorithm to the "preferred base
tree" objects and the incoming pathnames, to group the same
files from different revs together, while spreading files with
the same basename in different directories.

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

pack-objects: thin pack micro-optimization.Junio C Hamano Thu, 23 Feb 2006 05:45:45 +0000 (21:45 -0800)

pack-objects: thin pack micro-optimization.

Since we sort objects by type, hash, preferredness and then
size, after we have a delta against preferred base, there is no
point trying a delta with non-preferred base. This seems to
save expensive calls to diff-delta and it also seems to save the
output space as well.

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

Merge branches 'maint', 'jc/fix-co-candy' and 'jc/fix... Junio C Hamano Thu, 23 Feb 2006 03:46:59 +0000 (19:46 -0800)

Merge branches 'maint', 'jc/fix-co-candy' and 'jc/fix-rename-leak' into next

* maint:
Give no terminating LF to error() function.

* jc/fix-co-candy:
checkout - eye candy.

* jc/fix-rename-leak:
diffcore-rename: plug memory leak.

diffcore-rename: plug memory leak.Junio C Hamano Thu, 23 Feb 2006 03:45:48 +0000 (19:45 -0800)

diffcore-rename: plug memory leak.

Spotted by Nicolas Pitre.

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

Merge branch 'ml/cvs'Junio C Hamano Thu, 23 Feb 2006 03:20:55 +0000 (19:20 -0800)

Merge branch 'ml/cvs'

* ml/cvs:
Introducing git-cvsserver -- a CVS emulator for git.

Merge branch 'ra/anno'Junio C Hamano Thu, 23 Feb 2006 03:20:08 +0000 (19:20 -0800)

Merge branch 'ra/anno'

* ra/anno:
Use Ryan's git-annotate instead of jsannotate
Add git-annotate, a tool for assigning blame.

Give no terminating LF to error() function.Junio C Hamano Thu, 23 Feb 2006 01:47:10 +0000 (17:47 -0800)

Give no terminating LF to error() function.

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

checkout - eye candy.Junio C Hamano Thu, 23 Feb 2006 03:02:39 +0000 (19:02 -0800)

checkout - eye candy.

This implements "eye candy" similar to the pack-object/unpack-object
to entertain users while a large tree is being checked out after
a clone or a pull.

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

Merge branch 'cw/remove' into nextJunio C Hamano Thu, 23 Feb 2006 01:15:01 +0000 (17:15 -0800)

Merge branch 'cw/remove' into next

* cw/remove:
git-rm: Fix to properly handle files with spaces, tabs, newlines, etc.
Add new git-rm command with documentation

git-rm: Fix to properly handle files with spaces, tabs... Carl Worth Thu, 23 Feb 2006 00:37:27 +0000 (16:37 -0800)

git-rm: Fix to properly handle files with spaces, tabs, newlines, etc.

New tests are added to the git-rm test case to cover this as well.

Signed-off-by: Carl Worth <cworth@cworth.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>