git
18 years agoMerge branch 'cvsserver' of http://locke.catalyst.net.nz/git/git-martinlanghoff;...
Junio C Hamano [Wed, 1 Mar 2006 09:33:23 +0000 (01:33 -0800)] 
Merge branch 'cvsserver' of locke.catalyst.net.nz/git/git-martinlanghoff; branch 'master' into next

Conflicts:

Documentation/git-cvsserver.txt
git-cvsserver.perl

Originally Martin's tree was based on "next", which meant that all
the other things that I am not ready to push out to "master" were
contained in it.  His changes looked good, and I wanted to have them
in "master".

So, here is what I did:

 - fetch Martin's tree into a temporary topic branch.
   $ git fetch $URL $remote:ml/cvsserver
   $ git checkout ml/cvsserver

 - rebase it on top of "master".
   $ git rebase --onto master next

 - pull that master into "next", recording Martin's head as well.
   $ git pull --append . master

Since I have apply.whitespace=strip in my configuration file, the
rebased cvsserver changes have trailing whitespaces introduced by
Martin's tree cleansed out.  Hence the above conflicts.

The reason I made this octopus is to make sure that next time Martin
pulls from my "next" branch, it results in a fast forward.  There is
no reason to force him do the same conflict resolution I did with this
merge.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoTeach git-checkout-index to read filenames from stdin.
Shawn Pearce [Wed, 1 Mar 2006 02:43:33 +0000 (21:43 -0500)] 
Teach git-checkout-index to read filenames from stdin.

Since git-checkout-index is often used from scripts which
may have a stream of filenames they wish to checkout it is
more convenient to use --stdin than xargs.  On platforms
where fork performance is currently sub-optimal and
the length of a command line is limited (*cough* Cygwin
*cough*) running a single git-checkout-index process for
a large number of files beats spawning it multiple times
from xargs.

File names are still accepted on the command line if
--stdin is not supplied.  Nothing is performed if no files
are supplied on the command line or by stdin.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoWarn about invalid refs
Johannes Schindelin [Tue, 28 Feb 2006 21:16:01 +0000 (22:16 +0100)] 
Warn about invalid refs

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agocvsserver: Eclipse compat - browsing 'modules' (heads in our case) works
Martin Langhoff [Wed, 1 Mar 2006 07:03:58 +0000 (20:03 +1300)] 
cvsserver: Eclipse compat - browsing 'modules' (heads in our case) works

Eclipse CVS clients have an odd way of perusing the top level of
the repository, by calling update on module "". So reproduce cvs'
odd behaviour in the interest of compatibility.

It makes it much easier to get a checkout when using Eclipse.

18 years agocvsserver: Eclipse compat fixes - implement Questionable, alias rlog, add a space...
Martin Langhoff [Wed, 1 Mar 2006 06:30:35 +0000 (19:30 +1300)] 
cvsserver: Eclipse compat fixes - implement Questionable, alias rlog, add a space after the U

A few things to satisfy Eclipse's strange habits as a cvs client:

- Implement Questionable
- Aliased rlog to log, but more work may be needed
- Add a space after the U that indicates updated

18 years agocvsserver: add notes on how to get a checkout under Eclipse
Martin Langhoff [Thu, 23 Feb 2006 23:20:51 +0000 (12:20 +1300)] 
cvsserver: add notes on how to get a checkout under Eclipse

18 years agocvsserver: Eclipse compat - browsing 'modules' (heads in our case) works
Martin Langhoff [Wed, 1 Mar 2006 07:03:58 +0000 (20:03 +1300)] 
cvsserver: Eclipse compat - browsing 'modules' (heads in our case) works

Eclipse CVS clients have an odd way of perusing the top level of
the repository, by calling update on module "". So reproduce cvs'
odd behaviour in the interest of compatibility.

It makes it much easier to get a checkout when using Eclipse.

18 years agocvsserver: Eclipse compat fixes - implement Questionable, alias rlog, add a space...
Martin Langhoff [Wed, 1 Mar 2006 06:30:35 +0000 (19:30 +1300)] 
cvsserver: Eclipse compat fixes - implement Questionable, alias rlog, add a space after the U

A few things to satisfy Eclipse's strange habits as a cvs client:

- Implement Questionable
- Aliased rlog to log, but more work may be needed
- Add a space after the U that indicates updated

18 years agocvsserver: add notes on how to get a checkout under Eclipse
Martin Langhoff [Thu, 23 Feb 2006 23:20:51 +0000 (12:20 +1300)] 
cvsserver: add notes on how to get a checkout under Eclipse

18 years agogit-am: --whitespace=x option.
Junio C Hamano [Wed, 1 Mar 2006 04:26:25 +0000 (20:26 -0800)] 
git-am: --whitespace=x option.

This is passed down to git-apply to override the built-in
default and per-repository configuration at runtime.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-am: --whitespace=x option.
Junio C Hamano [Wed, 1 Mar 2006 04:26:25 +0000 (20:26 -0800)] 
git-am: --whitespace=x option.

This is passed down to git-apply to override the built-in
default and per-repository configuration at runtime.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiffcore-rename: split out the delta counting code.
Junio C Hamano [Wed, 1 Mar 2006 00:01:36 +0000 (16:01 -0800)] 
diffcore-rename: split out the delta counting code.

This is to rework diffcore break/rename/copy detection code
so that it does not affected when deltifier code gets improved.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiffcore-delta: stop using deltifier for packing.
Junio C Hamano [Wed, 1 Mar 2006 04:16:41 +0000 (20:16 -0800)] 
diffcore-delta: stop using deltifier for packing.

This switches the change estimation logic used by break, rename
and copy detection from delta packing code to a more line
oriented one.  This way, thee performance-density tradeoff by
delta packing code can be made without worrying about breaking
the rename detection.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiffcore-break: micro-optimize by avoiding delta between identical files.
Junio C Hamano [Wed, 1 Mar 2006 04:19:47 +0000 (20:19 -0800)] 
diffcore-break: micro-optimize by avoiding delta between identical files.

We did not check if we have the same file on both sides when
computing break score.  This is usually not a problem, but if
the user said --find-copies-harde with -B, we ended up trying a
delta between the same data even when we know the SHA1 hash of
both sides match.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoTie it all together: "git log"
Linus Torvalds [Tue, 28 Feb 2006 19:30:19 +0000 (11:30 -0800)] 
Tie it all together: "git log"

This is what the previous diffs all built up to.

We can do "git log" as a trivial small helper function inside git.c,
because the infrastructure is all there for us to use as a library.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoIntroduce trivial new pager.c helper infrastructure
Linus Torvalds [Tue, 28 Feb 2006 19:26:21 +0000 (11:26 -0800)] 
Introduce trivial new pager.c helper infrastructure

This introduces the new function

void setup_pager(void);

to set up output to be written through a pager applocation.

All in preparation for doing the simple scripts in C.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-rev-list libification: rev-list walking
Linus Torvalds [Tue, 28 Feb 2006 19:24:00 +0000 (11:24 -0800)] 
git-rev-list libification: rev-list walking

This actually moves the "meat" of the revision walking from rev-list.c
to the new library code in revision.h. It introduces the new functions

void prepare_revision_walk(struct rev_info *revs);
struct commit *get_revision(struct rev_info *revs);

to prepare and then walk the revisions that we have.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDarwin: Ignore missing /sw/lib
Shawn Pearce [Tue, 28 Feb 2006 14:03:48 +0000 (09:03 -0500)] 
Darwin: Ignore missing /sw/lib

When on Darwin platforms don't include Fink or DarwinPorts
into the link path unless the related library directory
is actually present.  The linker on MacOS 10.4 complains
if it is given a directory which does not exist.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitview: Set the default width of graph cell
Aneesh Kumar K.V [Tue, 28 Feb 2006 14:40:28 +0000 (20:10 +0530)] 
gitview: Set the default width of graph cell

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitview: Some window layout changes.
Aneesh Kumar K.V [Tue, 28 Feb 2006 13:42:18 +0000 (19:12 +0530)] 
gitview: Some window layout changes.

This makes menubar look nice

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitview: Select the text color based on whether the entry in highlighted. Use standar...
Pavel Roskin [Tue, 28 Feb 2006 13:41:08 +0000 (19:11 +0530)] 
gitview: Select the text color based on whether the entry in highlighted. Use standard font.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-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>
18 years agoMerge part of np/delta
Junio C Hamano [Tue, 28 Feb 2006 09:15:29 +0000 (01:15 -0800)] 
Merge part of np/delta

18 years agoMerge branch 'lt/apply' into next
Junio 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

18 years agogit-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>
18 years agodiff-delta: bound hash list length to avoid O(m*n) behavior
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>
18 years agoRevert "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""

18 years agogit-apply --whitespace=nowarn
Junio 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>
18 years agoapply --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>
18 years agoapply: squelch excessive errors and --whitespace=error-all
Junio 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>
18 years agoapply --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>
18 years agoThe war on trailing whitespace
Linus 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

18 years agogit-apply --whitespace=nowarn
Junio 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>
18 years agoMerge branch 'master' into next
Junio 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.

18 years agoMerge branch 'lt/rev-list' into next
Junio 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.

18 years agoMerge branch 'lt/apply' into next
Junio 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

18 years agoMerge branch 'kh/svnimport' into next
Junio 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

18 years agoMerge part of kh/svnimport branch into master
Junio C Hamano [Mon, 27 Feb 2006 23:46:39 +0000 (15:46 -0800)] 
Merge part of kh/svnimport branch into master

18 years agocontrib/git-svn: correct commit example in manpage
Eric 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>
18 years agoSave username -> Full Name <email@addr.es> map file
Karl 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>
18 years agoLet git-svnimport's author file use same syntax as git-cvsimport's
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>
18 years agoapply --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>
18 years agoapply: squelch excessive errors and --whitespace=error-all
Junio 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>
18 years agocontrib/git-svn: tell the user to not modify git-svn-HEAD directly
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>
18 years agoSplitting 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>
18 years agogitview: Remove trailing white space
Aneesh 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>
18 years agogitview: Fix the encoding related bug
Aneesh 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>
18 years agogit-format-patch: Always add a blank line between headers and body.
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>
18 years agocombine-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>
18 years agocombine-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>
18 years agoMerge branch 'kh/svnimport' into next
Junio 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

18 years agoMerge branch 'lt/apply' into next
Junio 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

18 years agoapply --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>
18 years agoThe war on trailing whitespace
Linus 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

18 years agoMerge branch 'lt/rev-list' into next
Junio 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.

18 years agosvnimport: Read author names and emails from a file
Karl 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>
18 years agosvnimport: Convert the svn:ignore property
Karl 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>
18 years agosvnimport: Convert executable flag
Karl 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>
18 years agosvnimport: Mention -r in usage summary
Karl 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>
18 years agorev-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>
18 years agoMake git diff-generation use a simpler spawn-like interface
Linus 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>
18 years agoMerge branch 'lt/rev-list' into next
Junio 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

18 years agoFirst cut at libifying revlist generation
Linus 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>
18 years agoMerge branch 'maint'
Junio C Hamano [Sun, 26 Feb 2006 23:25:52 +0000 (15:25 -0800)] 
Merge branch 'maint'

* maint:
  sample hooks template.

18 years agosample 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>
18 years agoTeach the "git" command to handle some commands internally
Linus 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>
18 years agoUse setenv(), fix warnings
Timo 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>
18 years agocontrib/git-svn: version 0.10.0
Eric 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>
18 years agocontrib/git-svn: optimize sequential commits to svn
Eric 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>
18 years agocontrib/git-svn: add show-ignore command
Eric 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>
18 years agoannotate: 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>
18 years agoannotate: 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>
18 years agoannotate: 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>
18 years agogit-fetch: print the new and old ref when fast-forwarding
Lukas 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>
18 years agoMerge branch 'master' into next
Junio 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 .

18 years agofix warning from pack-objects.c
Luck, 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>
18 years agoMerge 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")

18 years agoMerge branch 'master' into next
Junio 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

18 years agoMerge 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

18 years agogitview: 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>
18 years agogitview: Code cleanup
Aneesh 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>
18 years agoAdd missing programs to ignore list
Shawn 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>
18 years agogit ls files recursively show ignored files
Shawn 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>
18 years agoBuild 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>
18 years agogitview: Bump the rev
Aneesh 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>
18 years agogitview: Fix DeprecationWarning
Aneesh 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>
18 years agoMerge branch 'master' into next
Junio 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.

18 years agoMerge 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.

18 years agoMerge branch 'fix' into maint
Junio 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.

18 years agoMerge branches 'jc/rev-list' and 'jc/pack-thin' into next
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.

18 years agoMerge fix bits from jc/rev-list
Junio C Hamano [Fri, 24 Feb 2006 09:33:57 +0000 (01:33 -0800)] 
Merge fix bits from jc/rev-list

18 years agoMerge branch 'np/delta' into next
Junio 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.

18 years agoRevert "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>
18 years agoMerge fixes from master
Junio C Hamano [Fri, 24 Feb 2006 09:14:41 +0000 (01:14 -0800)] 
Merge fixes from master

18 years agopack-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>
18 years agorev-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>
18 years agorev-list --objects-edge: remove duplicated edge commit output.
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>
18 years agopack-objects: allow "thin" packs to exceed depth limits
Junio 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>
18 years agoMerge 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

18 years agoMerge 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.