Git development
 help / color / mirror / Atom feed
* Re: [PATCH] git-archive: recursive prefix directory creation
From: René Scharfe @ 2007-05-20 10:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List
In-Reply-To: <7vtzu8va12.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano schrieb:
> René Scharfe <rene.scharfe@lsrfire.ath.cx> writes:
> 
>> Junio C Hamano schrieb:
>>> René Scharfe <rene.scharfe@lsrfire.ath.cx> writes:
>>> 
>>>> Currently git-archive only adds a single directory entry for
>>>> prefixes, e.g. for --prefix=a/b/c/ only the directory a/b/c/
>>>> would be added to the archive, not a/ nor a/b/.  While tar and
>>>> unzip don't seem to have a problem handling these missing
>>>> entries, their omission was not intended.
>>> Until we start tracking directories (we briefly discussed, and I 
>>> think I agree with Linus that it should not be too painful), I'd 
>>> rather keep the current behaviour which I feel is more consistent
>>> with what we really are doing.
>> Hmm, fair enough.  I started out with a simple cleanup and then I
>> guess went a bit overboard with that overblown path walker. :-]
> 
> Well, I take that back -- I did not realize you were primarily 
> talking about the LEADING part of the path.

In any case, please don't apply this patch.  I checked again, and it
turns out both tar and zip don't always add leading directories to
archives.  So my "cleanup" only adds bloat.  I'll try to find another
way to beautify the code.

René

^ permalink raw reply

* Re: [PATCH] Teach 'git-apply --whitespace=strip' to remove empty lines at the end of file
From: Marco Costalba @ 2007-05-20 10:34 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List
In-Reply-To: <7vabvzq0bb.fsf@assigned-by-dhcp.cox.net>

On 5/20/07, Junio C Hamano <junkio@cox.net> wrote:
> "Marco Costalba" <mcostalba@gmail.com> writes:
>
> > Signed-off-by: Marco Costalba <mcostalba@gmail.com>
> > ---
> >
> > This one seems to pass all the tests.
>
> I think this happens to work because you are not feeding -u0
> patch; if you have more than one context, then a hunk that ends
> with + line is guaranteed to apply only at the end,  With a
> diff prepared with -u0, that is not true anymore, is it?
>

I don't know much about this -u0 thing, could you please point me to
an example so I can try to fix also this case?

Thanks
Marco

^ permalink raw reply

* Re: [ANNOUNCE] GIT 1.5.2
From: Thomas Glanzmann @ 2007-05-20 10:30 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vejlbq0gf.fsf@assigned-by-dhcp.cox.net>

Hello Junio,

> Please add $(LIBS) at the end and try again.  Sorry.

that fixes it.

        Thomas

^ permalink raw reply

* [PATCH 6/6] Remove additional whitespace breakage
From: Marco Costalba @ 2007-05-20 10:30 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

This time using nice clean.sh script from H. Peter Anvin

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
  builtin-pack-objects.c |    2 +-
  builtin-tar-tree.c     |    2 +-
  diff.h                 |    2 +-
  git-clean.sh           |    2 +-
  git-svn.perl           |    2 +-
  git.c                  |    2 +-
  gitweb/gitweb.perl     |    6 +++---
  read-cache.c           |    4 ++--
  8 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 3ba1f09..dda7d2e 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -28,7 +28,7 @@ struct object_entry {
  	unsigned long size;	/* uncompressed size */
  	unsigned int hash;	/* name hint hash */
  	unsigned int depth;	/* delta depth */
-	struct packed_git *in_pack; 	/* already in pack */
+	struct packed_git *in_pack;	/* already in pack */
  	off_t in_pack_offset;
  	struct object_entry *delta;	/* delta base object */
  	struct object_entry *delta_child; /* deltified objects who bases me */
diff --git a/builtin-tar-tree.c b/builtin-tar-tree.c
index b04719e..8861a29 100644
--- a/builtin-tar-tree.c
+++ b/builtin-tar-tree.c
@@ -21,7 +21,7 @@ int cmd_tar_tree(int argc, const char **argv, const char *prefix)
  	 * $0 tree-ish ==>
  	 *	git-archive --format=tar tree-ish
  	 * $0 tree-ish basedir ==>
-	 * 	git-archive --format-tar --prefix=basedir tree-ish
+	 *	git-archive --format-tar --prefix=basedir tree-ish
  	 */
  	int i;
  	const char **nargv = xcalloc(sizeof(*nargv), argc + 2);
diff --git a/diff.h b/diff.h
index 63738c1..f7e6377 100644
--- a/diff.h
+++ b/diff.h
@@ -157,7 +157,7 @@ extern void diff_unmerge(struct diff_options *,

  extern int diff_scoreopt_parse(const char *opt);

-#define DIFF_SETUP_REVERSE      	1
+#define DIFF_SETUP_REVERSE		1
  #define DIFF_SETUP_USE_CACHE		2
  #define DIFF_SETUP_USE_SIZE_CACHE	4

diff --git a/git-clean.sh b/git-clean.sh
index 299309d..538d2f6 100755
--- a/git-clean.sh
+++ b/git-clean.sh
@@ -7,7 +7,7 @@ USAGE="[-d] [-f] [-n] [-q] [-x | -X] [--] <paths>..."
  LONG_USAGE='Clean untracked files from the working directory
  	-d	remove directories as well
  	-f	override clean.requireForce and clean anyway
-	-n 	don'\''t remove anything, just show what would be done
+	-n	don'\''t remove anything, just show what would be done
  	-q	be quiet, only report errors
  	-x	remove ignored files as well
  	-X	remove only ignored files
diff --git a/git-svn.perl b/git-svn.perl
index eda9969..8ac39b2 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -4008,7 +4008,7 @@ diff-index line ($m hash)
  $l_map = {
  	# repository root url
  	'https://svn.musicpd.org' => {
-		# repository path 		# GIT_SVN_ID
+		# repository path		# GIT_SVN_ID
  		'mpd/trunk'		=>	'trunk',
  		'mpd/tags/0.11.5'	=>	'tags/0.11.5',
  	},
diff --git a/git.c b/git.c
index f200907..664a638 100644
--- a/git.c
+++ b/git.c
@@ -214,7 +214,7 @@ const char git_version_string[] = GIT_VERSION;
   * require working tree to be present -- anything uses this needs
   * RUN_SETUP for reading from the configuration file.
   */
-#define NOT_BARE 	(1<<2)
+#define NOT_BARE	(1<<2)

  static void handle_internal_command(int argc, const char **argv, char **envp)
  {
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 5c7011a..8226b48 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -98,9 +98,9 @@ our $mimetypes_file = undef;
  # $GITWEB_CONFIG as necessary.
  our %feature = (
  	# feature => {
-	# 	'sub' => feature-sub (subroutine),
-	# 	'override' => allow-override (boolean),
-	# 	'default' => [ default options...] (array reference)}
+	#	'sub' => feature-sub (subroutine),
+	#	'override' => allow-override (boolean),
+	#	'default' => [ default options...] (array reference)}
  	#
  	# if feature is overridable (it means that allow-override has true value),
  	# then feature-sub will be called with default options as parameters;
diff --git a/read-cache.c b/read-cache.c
index 0f0c827..922046f 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -208,9 +208,9 @@ int ie_match_stat(struct index_state *istate,

  	/*
  	 * Within 1 second of this sequence:
-	 * 	echo xyzzy >file && git-update-index --add file
+	 *	echo xyzzy >file && git-update-index --add file
  	 * running this command:
-	 * 	echo frotz >file
+	 *	echo frotz >file
  	 * would give a falsely clean cache entry.  The mtime and
  	 * length match the cache, and other stat fields do not change.
  	 *
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* Re: Smart fetch via HTTP?
From: Jan Hudec @ 2007-05-20 10:30 UTC (permalink / raw)
  To: Joel Becker; +Cc: Linus Torvalds, Matthieu Moy, git
In-Reply-To: <20070518215607.GT24644@ca-server1.us.oracle.com>

[-- Attachment #1: Type: text/plain, Size: 2000 bytes --]

On Fri, May 18, 2007 at 14:56:07 -0700, Joel Becker wrote:
> On Fri, May 18, 2007 at 01:13:36PM -0700, Linus Torvalds wrote:
> > If it's _just_ the initial GET/CONNECT strings, yeah, we could probably 
> > easily make the git-daemon just ignore them. That shouldn't be a problem.
> > 
> > But if there's anything *else* required, it gets uglier much more quickly.
> 
> 	With CONNECT, there isn't anything.  That is, your
> GIT_PROXY_COMMAND handles talking to the proxy, then gives git itself a
> raw data pipe.  My proxy allows CONNECT to 9418, and that's how I use it
> today.

Yes. Connect is easy. However many companies only allow CONNECT to 443
(not that it's much more secure than allowing it anywhere, but at least it
has to block CONNECT to 25 to block sending spam).

> 	If you tried to make POST work (It'd be POST, not GET, as you
> need to connect up the sending side), either apache would have to front
> it for us, or "git-daemon --http" would have to accept the HTTP headers
> on before the input, and output a proper HTTP response before sending
> output.  Seeing the headers would allow for us to vhost, even.
> 	Hmm, but the proxy may not allow two-way communication.  Does
> the git protocol have more than one round-trip?  That is:
> 
> Client:
>     POST http://server.git.host:80/projects/thisproject HTTP/1.1
>     Host: server.git.host
> 
>     fetch-pack <sha1>
>     EOF
> 
> Server:
>     200 OK HTTP/1.1
>     
>     <data>
>     EOF
> 
> should work, I'd think.

Well, that does not require git at all -- apache can handle this all right.
But it's not network-efficient. To be network-efficient, it is necessary to
negotiate the list of objects that need to be send. And that requires more
than one round-trip. Additionally, the current git protocol is streaming --
the client sends data without waiting for the server. So it would require
slightly different protocol over HTTP.

-- 
						 Jan 'Bulb' Hudec <bulb@ucw.cz>

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* [PATCH 5/6] Remove whitespace breakage from remaining misc files
From: Marco Costalba @ 2007-05-20 10:29 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Using 'git apply --whitespace=strip'

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
  GIT-VERSION-GEN                  |    2 --
  INSTALL                          |    3 +--
  arm/sha1_arm.S                   |    1 -
  config.mak.in                    |    1 -
  contrib/README                   |    1 -
  contrib/blameview/README         |    1 -
  contrib/hooks/post-receive-email |    2 +-
  git-gui/GIT-VERSION-GEN          |    2 --
  git.spec.in                      |    2 +-
  gitweb/README                    |    1 -
  templates/hooks--commit-msg      |    1 -
  templates/hooks--post-receive    |    1 -
  templates/hooks--pre-applypatch  |    1 -
  templates/hooks--pre-commit      |    1 -
  14 files changed, 3 insertions(+), 17 deletions(-)

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 06c360b..289c806 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -43,5 +43,3 @@ test "$VN" = "$VC" || {
  	echo >&2 "GIT_VERSION = $VN"
  	echo "GIT_VERSION = $VN" >$GVF
  }
-
-
diff --git a/INSTALL b/INSTALL
index 361c65b..95269cc 100644
--- a/INSTALL
+++ b/INSTALL
@@ -31,7 +31,7 @@ Issues of note:
     interactive tools.  None of the core git stuff needs the wrapper,
     it's just a convenient shorthand and while it is documented in some
     places, you can always replace "git commit" with "git-commit"
-   instead.
+   instead.

     But let's face it, most of us don't have GNU interactive tools, and
     even if we had it, we wouldn't know what it does.  I don't think it
@@ -111,4 +111,3 @@ Issues of note:
     would instead give you a copy of what you see at:

  	http://www.kernel.org/pub/software/scm/git/docs/
-
diff --git a/arm/sha1_arm.S b/arm/sha1_arm.S
index a328b73..8c1cb99 100644
--- a/arm/sha1_arm.S
+++ b/arm/sha1_arm.S
@@ -181,4 +181,3 @@ sha_transform:

  .L_sha_K:
  	.word	0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6
-
diff --git a/config.mak.in b/config.mak.in
index eb9d7a5..a3032e3 100644
--- a/config.mak.in
+++ b/config.mak.in
@@ -38,4 +38,3 @@ NO_STRCASESTR=@NO_STRCASESTR@
  NO_STRLCPY=@NO_STRLCPY@
  NO_SETENV=@NO_SETENV@
  NO_ICONV=@NO_ICONV@
-
diff --git a/contrib/README b/contrib/README
index e1c0a01..05f291c 100644
--- a/contrib/README
+++ b/contrib/README
@@ -41,4 +41,3 @@ submit a patch to create a subdirectory of contrib/ and put your
  stuff there.

  -jc
-
diff --git a/contrib/blameview/README b/contrib/blameview/README
index 50a6f67..fada5ce 100644
--- a/contrib/blameview/README
+++ b/contrib/blameview/README
@@ -7,4 +7,3 @@ To: Linus Torvalds <torvalds@linux-foundation.org>
  Cc: git@vger.kernel.org
  Date: Sat, 27 Jan 2007 18:52:38 -0500
  Message-ID: <20070127235238.GA28706@coredump.intra.peff.net>
-
diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
index d1bef91..c589a39 100644
--- a/contrib/hooks/post-receive-email
+++ b/contrib/hooks/post-receive-email
@@ -199,7 +199,7 @@ generate_email_footer()


  	hooks/post-receive
-	--
+	--
  	$projectdesc
  	EOF
  }
diff --git a/git-gui/GIT-VERSION-GEN b/git-gui/GIT-VERSION-GEN
index 25647c8..eee495a 100755
--- a/git-gui/GIT-VERSION-GEN
+++ b/git-gui/GIT-VERSION-GEN
@@ -78,5 +78,3 @@ test "$VN" = "$VC" || {
  	echo >&2 "GITGUI_VERSION = $VN"
  	echo "GITGUI_VERSION = $VN" >$GVF
  }
-
-
diff --git a/git.spec.in b/git.spec.in
index 3a45eb8..b9dc1d5 100644
--- a/git.spec.in
+++ b/git.spec.in
@@ -63,7 +63,7 @@ Git tools for importing Perforce repositories.
  %package email
  Summary:        Git tools for sending email
  Group:          Development/Tools
-Requires:	git-core = %{version}-%{release}
+Requires:	git-core = %{version}-%{release}
  %description email
  Git tools for sending email.

diff --git a/gitweb/README b/gitweb/README
index e02e90f..7186ced 100644
--- a/gitweb/README
+++ b/gitweb/README
@@ -79,4 +79,3 @@ Originally written by:

  Any comment/question/concern to:
    Git mailing list <git@vger.kernel.org>
-
diff --git a/templates/hooks--commit-msg b/templates/hooks--commit-msg
index 9b04f2d..c5cdb9d 100644
--- a/templates/hooks--commit-msg
+++ b/templates/hooks--commit-msg
@@ -19,4 +19,3 @@ test "" = "$(grep '^Signed-off-by: ' "$1" |
  	echo >&2 Duplicate Signed-off-by lines.
  	exit 1
  }
-
diff --git a/templates/hooks--post-receive b/templates/hooks--post-receive
index 190de26..b70c8fd 100644
--- a/templates/hooks--post-receive
+++ b/templates/hooks--post-receive
@@ -14,4 +14,3 @@


  #. /usr/share/doc/git-core/contrib/hooks/post-receive-email
-
diff --git a/templates/hooks--pre-applypatch b/templates/hooks--pre-applypatch
index 5f56ce8..eeccc93 100644
--- a/templates/hooks--pre-applypatch
+++ b/templates/hooks--pre-applypatch
@@ -12,4 +12,3 @@
  test -x "$GIT_DIR/hooks/pre-commit" &&
  	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
  :
-
diff --git a/templates/hooks--pre-commit b/templates/hooks--pre-commit
index 723a9ef..18b8730 100644
--- a/templates/hooks--pre-commit
+++ b/templates/hooks--pre-commit
@@ -68,4 +68,3 @@ perl -e '
      }
      exit($found_bad);
  '
-
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* [PATCH 4/6] Remove whitespace breakage from perl, tcl and python files
From: Marco Costalba @ 2007-05-20 10:28 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Using 'git apply --whitespace=strip'

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
  contrib/gitview/gitview  |    2 -
  git-archimport.perl      |  175 +++++++++++++++++++++++-----------------------
  git-cvsexportcommit.perl |    2 +-
  git-cvsimport.perl       |   12 ++--
  git-gui/lib/class.tcl    |    1 -
  git-p4import.py          |    1 -
  git-svnimport.perl       |    4 +-
  gitk                     |    2 +-
  8 files changed, 97 insertions(+), 102 deletions(-)

diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
index 2d80e2b..3dc1ef5 100755
--- a/contrib/gitview/gitview
+++ b/contrib/gitview/gitview
@@ -1277,5 +1277,3 @@ if __name__ == "__main__":

  	view = GitView( without_diff != 1)
  	view.run(sys.argv[without_diff:])
-
-
diff --git a/git-archimport.perl b/git-archimport.perl
index c1e7c1d..b210772 100755
--- a/git-archimport.perl
+++ b/git-archimport.perl
@@ -3,19 +3,19 @@
  # This tool is copyright (c) 2005, Martin Langhoff.
  # It is released under the Gnu Public License, version 2.
  #
-# The basic idea is to walk the output of tla abrowse,
-# fetch the changesets and apply them.
+# The basic idea is to walk the output of tla abrowse,
+# fetch the changesets and apply them.
  #

  =head1 Invocation

-    git-archimport [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
-    	[ -D depth] [ -t tempdir ] <archive>/<branch> [ <archive>/<branch> ]
+    git-archimport [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
+	[ -D depth] [ -t tempdir ] <archive>/<branch> [ <archive>/<branch> ]

  Imports a project from one or more Arch repositories. It will follow branches
  and repositories within the namespaces defined by the <archive/branch>
  parameters supplied. If it cannot find the remote branch a merge comes from
-it will just import it as a regular commit. If it can find it, it will mark it
+it will just import it as a regular commit. If it can find it, it will mark it
  as a merge whenever possible.

  See man (1) git-archimport for more details.
@@ -25,14 +25,14 @@ See man (1) git-archimport for more details.
   - create tag objects instead of ref tags
   - audit shell-escaping of filenames
   - hide our private tags somewhere smarter
- - find a way to make "cat *patches | patch" safe even when patchfiles are missing newlines
+ - find a way to make "cat *patches | patch" safe even when patchfiles are missing newlines
   - sort and apply patches by graphing ancestry relations instead of just
     relying in dates supplied in the changeset itself.
     tla ancestry-graph -m could be helpful here...

  =head1 Devel tricks

-Add print in front of the shell commands invoked via backticks.
+Add print in front of the shell commands invoked via backticks.

  =head1 Devel Notes

@@ -126,16 +126,16 @@ sub do_abrowse {
      my $stage = shift;
      while (my ($limit, $level) = each %arch_branches) {
          next unless $level == $stage;
-
-	open ABROWSE, "$TLA abrowse -fkD --merges $limit |"
+
+	open ABROWSE, "$TLA abrowse -fkD --merges $limit |"
                                  or die "Problems with tla abrowse: $!";
-
+
          my %ps        = ();         # the current one
          my $lastseen  = '';
-
+
          while (<ABROWSE>) {
              chomp;
-
+
              # first record padded w 8 spaces
              if (s/^\s{8}\b//) {
                  my ($id, $type) = split(m/\s+/, $_, 2);
@@ -147,13 +147,13 @@ sub do_abrowse {
                      push (@psets, \%last_ps);
                      $psets{ $last_ps{id} } = \%last_ps;
                  }
-
+
                  my $branch = extract_versionname($id);
                  %ps = ( id => $id, branch => $branch );
                  if (%last_ps && ($last_ps{branch} eq $branch)) {
                      $ps{parent_id} = $last_ps{id};
                  }
-
+
                  $arch_branches{$branch} = 1;
                  $lastseen = 'id';

@@ -166,16 +166,16 @@ sub do_abrowse {
                      $ps{type} = 't';
                      # read which revision we've tagged when we parse the log
                      $ps{tag}  = $1;
-                } else {
+                } else {
                      warn "Unknown type $type";
                  }

                  $arch_branches{$branch} = 1;
                  $lastseen = 'id';
-            } elsif (s/^\s{10}//) {
-                # 10 leading spaces or more
+            } elsif (s/^\s{10}//) {
+                # 10 leading spaces or more
                  # indicate commit metadata
-
+
                  # date
                  if ($lastseen eq 'id' && m/^(\d{4}-\d\d-\d\d \d\d:\d\d:\d\d)/){
                      $ps{date}   = $1;
@@ -186,12 +186,12 @@ sub do_abrowse {
                  } elsif ($lastseen eq 'merges' && s/^\s{2}//) {
                      my $id = $_;
                      push (@{$ps{merges}}, $id);
-
+
                      # aggressive branch finding:
                      if ($opt_D) {
                          my $branch = extract_versionname($id);
                          my $repo = extract_reponame($branch);
-
+
                          if (archive_reachable($repo) &&
                                  !defined $arch_branches{$branch}) {
                              $arch_branches{$branch} = $stage + 1;
@@ -208,10 +208,10 @@ sub do_abrowse {
              if (@psets && $psets[$#psets]{branch} eq $ps{branch}) {
                  $temp{parent_id} = $psets[$#psets]{id};
              }
-            push (@psets, \%temp);
+            push (@psets, \%temp);
              $psets{ $temp{id} } = \%temp;
-        }
-
+        }
+
          close ABROWSE or die "$TLA abrowse failed on $limit\n";
      }
  }                               # end foreach $root
@@ -253,7 +253,7 @@ unless (-d $git_dir) { # initial import
      while (my $file = readdir(DIR)) {
          # skip non-interesting-files
          next unless -f "$ptag_dir/$file";
-
+
          # convert first '--' to '/' from old git-archimport to use
          # as an archivename/c--b--v private tag
          if ($file !~ m!,!) {
@@ -275,7 +275,7 @@ sub extract_reponame {
      my $fq_cvbr = shift; # archivename/[[[[category]branch]version]revision]
      return (split(/\//, $fq_cvbr))[0];
  }
-
+
  sub extract_versionname {
      my $name = shift;
      $name =~ s/--(?:patch|version(?:fix)?|base)-\d+$//;
@@ -283,7 +283,7 @@ sub extract_versionname {
  }

  # convert a fully-qualified revision or version to a unique dirname:
-#   normalperson@yhbt.net-05/mpd--uclinux--1--patch-2
+#   normalperson@yhbt.net-05/mpd--uclinux--1--patch-2
  # becomes: normalperson@yhbt.net-05,mpd--uclinux--1
  #
  # the git notion of a branch is closer to
@@ -339,7 +339,7 @@ sub git_branchname {

  sub process_patchset_accurate {
      my $ps = shift;
-
+
      # switch to that branch if we're not already in that branch:
      if (-e "$git_dir/refs/heads/$ps->{branch}") {
         system('git-checkout','-f',$ps->{branch}) == 0 or die "$! $?\n";
@@ -348,7 +348,7 @@ sub process_patchset_accurate {
         my $rm = safe_pipe_capture('git-ls-files','--others','-z');
         rmtree(split(/\0/,$rm)) if $rm;
      }
-
+
      # Apply the import/changeset/merge into the working tree
      my $dir = sync_to_ps($ps);
      # read the new log entry:
@@ -361,9 +361,9 @@ sub process_patchset_accurate {
      parselog($ps, \@commitlog);

      if ($ps->{id} =~ /--base-0$/ && $ps->{id} ne $psets[0]{id}) {
-        # this should work when importing continuations
+        # this should work when importing continuations
          if ($ps->{tag} && (my $branchpoint = eval { ptag($ps->{tag}) })) {
-
+
              # find where we are supposed to branch from
  	    if (! -e "$git_dir/refs/heads/$ps->{branch}") {
  		system('git-branch',$ps->{branch},$branchpoint) == 0 or die "$! $?\n";
@@ -388,8 +388,8 @@ sub process_patchset_accurate {
          }
          # allow multiple bases/imports here since Arch supports cherry-picks
          # from unrelated trees
-    }
-
+    }
+
      # update the index with all the changes we got
      system('git-diff-files --name-only -z | '.
              'git-update-index --remove -z --stdin') == 0 or die "$! $?\n";
@@ -402,7 +402,7 @@ sub process_patchset_accurate {
  # does not handle permissions or any renames involving directories
  sub process_patchset_fast {
      my $ps = shift;
-    #
+    #
      # create the branch if needed
      #
      if ($ps->{type} eq 'i' && !$import) {
@@ -417,9 +417,9 @@ sub process_patchset_fast {
              # new branch! we need to verify a few things
              die "Branch on a non-tag!" unless $ps->{type} eq 't';
              my $branchpoint = ptag($ps->{tag});
-            die "Tagging from unknown id unsupported: $ps->{tag}"
+            die "Tagging from unknown id unsupported: $ps->{tag}"
                  unless $branchpoint;
-
+
              # find where we are supposed to branch from
  	    if (! -e "$git_dir/refs/heads/$ps->{branch}") {
  		system('git-branch',$ps->{branch},$branchpoint) == 0 or die "$! $?\n";
@@ -435,13 +435,13 @@ sub process_patchset_fast {
              }
              system('git-checkout',$ps->{branch}) == 0 or die "$! $?\n";
              return 0;
-        }
+        }
          die $! if $?;
-    }
+    }

      #
      # Apply the import/changeset/merge into the working tree
-    #
+    #
      if ($ps->{type} eq 'i' || $ps->{type} eq 't') {
          apply_import($ps) or die $!;
          $stats{import_or_tag}++;
@@ -455,10 +455,10 @@ sub process_patchset_fast {
      # prepare update git's index, based on what arch knows
      # about the pset, resolve parents, etc
      #
-
-    my @commitlog = safe_pipe_capture($TLA,'cat-archive-log',$ps->{id});
+
+    my @commitlog = safe_pipe_capture($TLA,'cat-archive-log',$ps->{id});
      die "Error in cat-archive-log: $!" if $?;
-
+
      parselog($ps,\@commitlog);

      # imports don't give us good info
@@ -485,10 +485,10 @@ sub process_patchset_fast {
          if (@$ren % 2) {
              die "Odd number of entries in rename!?";
          }
-
+
          while (@$ren) {
              my $from = shift @$ren;
-            my $to   = shift @$ren;
+            my $to   = shift @$ren;

              unless (-d dirname($to)) {
                  mkpath(dirname($to)); # will die on err
@@ -529,20 +529,20 @@ if ($opt_f) {
              "Things may be a bit slow\n";
      *process_patchset = *process_patchset_accurate;
  }
-
+
  foreach my $ps (@psets) {
      # process patchsets
      $ps->{branch} = git_branchname($ps->{id});

      #
-    # ensure we have a clean state
-    #
+    # ensure we have a clean state
+    #
      if (my $dirty = `git-diff-files`) {
          die "Unclean tree when about to process $ps->{id} " .
              " - did we fail to commit cleanly before?\n$dirty";
      }
      die $! if $?;
-
+
      #
      # skip commits already in repo
      #
@@ -559,7 +559,7 @@ foreach my $ps (@psets) {
      my $tree = `git-write-tree`;
      die "cannot write tree $!" if $?;
      chomp $tree;
-
+
      #
      # Who's your daddy?
      #
@@ -570,18 +570,18 @@ foreach my $ps (@psets) {
              close HEAD;
              chomp $p;
              push @par, '-p', $p;
-        } else {
+        } else {
              if ($ps->{type} eq 's') {
                  warn "Could not find the right head for the branch $ps->{branch}";
              }
          }
      }
-
+
      if ($ps->{merges}) {
          push @par, find_parents($ps);
      }

-    #
+    #
      # Commit, tag and clean state
      #
      $ENV{TZ}                  = 'GMT';
@@ -592,14 +592,14 @@ foreach my $ps (@psets) {
      $ENV{GIT_COMMITTER_EMAIL} = $ps->{email};
      $ENV{GIT_COMMITTER_DATE}  = $ps->{date};

-    my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par)
+    my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par)
          or die $!;
      print WRITER $ps->{summary},"\n\n";
      print WRITER $ps->{message},"\n";
-
+
      # make it easy to backtrack and figure out which Arch revision this was:
      print WRITER 'git-archimport-id: ',$ps->{id},"\n";
-
+
      close WRITER;
      my $commitid = <READER>;    # read
      chomp $commitid;
@@ -611,7 +611,7 @@ foreach my $ps (@psets) {
      }
      #
      # Update the branch
-    #
+    #
      open  HEAD, ">","$git_dir/refs/heads/$ps->{branch}";
      print HEAD $commitid;
      close HEAD;
@@ -640,7 +640,7 @@ exit 0;
  sub sync_to_ps {
      my $ps = shift;
      my $tree_dir = $tmp.'/'.tree_dirname($ps->{id});
-
+
      $opt_v && print "sync_to_ps($ps->{id}) method: ";

      if (-d $tree_dir) {
@@ -674,7 +674,7 @@ sub sync_to_ps {
          safe_pipe_capture($TLA,'get','--no-pristine',$ps->{id},$tree_dir);
          $stats{get_new}++;
      }
-
+
      # added -I flag to rsync since we're going to fast! AIEEEEE!!!!
      system('rsync','-aI','--delete','--exclude',$git_dir,
  #               '--exclude','.arch-inventory',
@@ -691,15 +691,15 @@ sub apply_import {
      mkpath($tmp);

      safe_pipe_capture($TLA,'get','-s','--no-pristine',$ps->{id},"$tmp/import");
-    die "Cannot get import: $!" if $?;
+    die "Cannot get import: $!" if $?;
      system('rsync','-aI','--delete', '--exclude',$git_dir,
  		'--exclude','.arch-ids','--exclude','{arch}',
  		"$tmp/import/", './');
      die "Cannot rsync import:$!" if $?;
-
+
      rmtree("$tmp/import");
      die "Cannot remove tempdir: $!" if $?;
-
+

      return 1;
  }
@@ -712,13 +712,13 @@ sub apply_cset {
      # get the changeset
      safe_pipe_capture($TLA,'get-changeset',$ps->{id},"$tmp/changeset");
      die "Cannot get changeset: $!" if $?;
-
+
      # apply patches
      if (`find $tmp/changeset/patches -type f -name '*.patch'`) {
          # this can be sped up considerably by doing
          #    (find | xargs cat) | patch
          # but that can get mucked up by patches
-        # with missing trailing newlines or the standard
+        # with missing trailing newlines or the standard
          # 'missing newline' flag in the patch - possibly
          # produced with an old/buggy diff.
          # slow and safe, we invoke patch once per patchfile
@@ -741,7 +741,7 @@ sub apply_cset {

      # bring in new files
      system('rsync','-aI','--exclude',$git_dir,
-    		'--exclude','.arch-ids',
+		'--exclude','.arch-ids',
  		'--exclude', '{arch}',
  		"$tmp/changeset/new-files-archive/",'./');

@@ -789,7 +789,7 @@ sub parselog {
          removed_files => 1,
          removed_directories => 1,
      );
-
+
      chomp (@$log);
      while ($_ = shift @$log) {
          if (/^Continuation-of:\s*(.*)/) {
@@ -828,7 +828,7 @@ sub parselog {
              }
          }
      }
-
+
      # drop leading empty lines from the log message
      while (@$log && $log->[0] eq '') {
  	shift @$log;
@@ -842,7 +842,7 @@ sub parselog {
  	$ps->{summary} = $log->[0] . '...';
      }
      $ps->{message} = join("\n",@$log);
-
+
      # skip Arch control files, unescape pika-escaped files
      foreach my $k (keys %want_headers) {
          next unless (defined $ps->{$k});
@@ -867,7 +867,7 @@ sub parselog {
  # write/read a tag
  sub tag {
      my ($tag, $commit) = @_;
-
+
      if ($opt_o) {
          $tag =~ s|/|--|g;
      } else {
@@ -875,7 +875,7 @@ sub tag {
  	$patchname =~ s/.*--//;
          $tag = git_branchname ($tag) . '--' . $patchname;
      }
-
+
      if ($commit) {
          open(C,">","$git_dir/refs/tags/$tag")
              or die "Cannot create tag $tag: $!\n";
@@ -902,8 +902,8 @@ sub ptag {
      my ($tag, $commit) = @_;

      # don't use subdirs for tags yet, it could screw up other porcelains
-    $tag =~ s|/|,|g;
-
+    $tag =~ s|/|,|g;
+
      my $tag_file = "$ptag_dir/$tag";
      my $tag_branch_dir = dirname($tag_file);
      mkpath($tag_branch_dir) unless (-d $tag_branch_dir);
@@ -915,7 +915,7 @@ sub ptag {
              or die "Cannot write tag $tag: $!\n";
          close(C)
              or die "Cannot write tag $tag: $!\n";
-	$rptags{$commit} = $tag
+	$rptags{$commit} = $tag
  	    unless $tag =~ m/--base-0$/;
      } else {                    # read
          # if the tag isn't there, return 0
@@ -941,7 +941,7 @@ sub find_parents {
      # Identify what branches are merging into me
      # and whether we are fully merged
      # git-merge-base <headsha> <headsha> should tell
-    # me what the base of the merge should be
+    # me what the base of the merge should be
      #
      my $ps = shift;

@@ -963,14 +963,14 @@ sub find_parents {
      }

      #
-    # foreach branch find a merge base and walk it to the
+    # foreach branch find a merge base and walk it to the
      # head where we are, collecting the merged patchsets that
      # Arch has recorded. Keep that in @have
      # Compare that with the commits on the other branch
      # between merge-base and the tip of the branch (@need)
      # and see if we have a series of consecutive patches
      # starting from the merge base. The tip of the series
-    # of consecutive patches merged is our new parent for
+    # of consecutive patches merged is our new parent for
      # that branch.
      #
      foreach my $branch (keys %branches) {
@@ -979,13 +979,13 @@ sub find_parents {
  	next unless -e "$git_dir/refs/heads/$branch";

  	my $mergebase = `git-merge-base $branch $ps->{branch}`;
- 	if ($?) {
- 	    # Don't die here, Arch supports one-way cherry-picking
- 	    # between branches with no common base (or any relationship
- 	    # at all beforehand)
- 	    warn "Cannot find merge base for $branch and $ps->{branch}";
- 	    next;
- 	}
+	if ($?) {
+	    # Don't die here, Arch supports one-way cherry-picking
+	    # between branches with no common base (or any relationship
+	    # at all beforehand)
+	    warn "Cannot find merge base for $branch and $ps->{branch}";
+	    next;
+	}
  	chomp $mergebase;

  	# now walk up to the mergepoint collecting what patches we have
@@ -1010,7 +1010,7 @@ sub find_parents {
  	# merge what we have with what ancestors have
  	%have = (%have, %ancestorshave);

-	# see what the remote branch has - these are the merges we
+	# see what the remote branch has - these are the merges we
  	# will want to have in a consecutive series from the mergebase
  	my $otherbranchtip = git_rev_parse($branch);
  	my @needraw = `git-rev-list --topo-order $otherbranchtip ^$mergebase`;
@@ -1018,7 +1018,7 @@ sub find_parents {
  	foreach my $needps (@needraw) { 	# get the psets
  	    $needps = commitid2pset($needps);
  	    # git-rev-list will also
-	    # list commits merged in via earlier
+	    # list commits merged in via earlier
  	    # merges. we are only interested in commits
  	    # from the branch we're looking at
  	    if ($branch eq $needps->{branch}) {
@@ -1054,7 +1054,7 @@ sub find_parents {
  	next unless ref    $psets{$p}{merges};
  	my @merges = @{$psets{$p}{merges}};
  	foreach my $merge (@merges) {
-	    if ($parents{$merge}) {
+	    if ($parents{$merge}) {
  		delete $parents{$merge};
  	    }
  	}
@@ -1079,10 +1079,10 @@ sub git_rev_parse {
  sub commitid2pset {
      my $commitid = shift;
      chomp $commitid;
-    my $name = $rptags{$commitid}
+    my $name = $rptags{$commitid}
  	|| die "Cannot find reverse tag mapping for $commitid";
      $name =~ s|,|/|;
-    my $ps   = $psets{$name}
+    my $ps   = $psets{$name}
  	|| (print Dumper(sort keys %psets)) && die "Cannot find patchset for $name";
      return $ps;
  }
@@ -1112,7 +1112,7 @@ sub archive_reachable {
      my $archive = shift;
      return 1 if $reachable{$archive};
      return 0 if $unreachable{$archive};
-
+
      if (system "$TLA whereis-archive $archive >/dev/null") {
          if ($opt_a && (system($TLA,'register-archive',
                        "http://mirrors.sourcecontrol.net/$archive") == 0)) {
@@ -1127,4 +1127,3 @@ sub archive_reachable {
          return 1;
      }
  }
-
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index d6ae99b..f95e369 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -193,7 +193,7 @@ if (@canstatusfiles) {
  # ... validate new files,
  foreach my $f (@afiles) {
      if (defined ($cvsstat{$f}) and $cvsstat{$f} ne "Unknown") {
- 	$dirty = 1;
+	$dirty = 1;
  	warn "File $f is already known in your CVS checkout -- perhaps it has been added by another user. Or this may 
indicate that it exists on a different branch. If this is the case, use -f to force the merge.\n";
  	warn "Status was: $cvsstat{$f}\n";
      }
diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index ac74bc5..d41eace 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -145,7 +145,7 @@ my $cvs_tree;
  if ($#ARGV == 0) {
  	$cvs_tree = $ARGV[0];
  } elsif (-f 'CVS/Repository') {
-	open my $f, '<', 'CVS/Repository' or
+	open my $f, '<', 'CVS/Repository' or
  	    die 'Failed to open CVS/Repository';
  	$cvs_tree = <$f>;
  	chomp $cvs_tree;
@@ -434,7 +434,7 @@ sub file {
  	my ($self,$fn,$rev) = @_;
  	my $res;

-	my ($fh, $name) = tempfile('gitcvs.XXXXXX',
+	my ($fh, $name) = tempfile('gitcvs.XXXXXX',
  		    DIR => File::Spec->tmpdir(), UNLINK => 1);

  	$self->_file($fn,$rev) and $res = $self->_line($fh);
@@ -520,8 +520,8 @@ sub is_sha1 {

  sub get_headref ($$) {
      my $name    = shift;
-    my $git_dir = shift;
-
+    my $git_dir = shift;
+
      my $f = "$git_dir/refs/heads/$name";
      if (open(my $fh, $f)) {
  	    chomp(my $r = <$fh>);
@@ -771,7 +771,7 @@ sub commit {
  		$xtag =~ s/\s+\*\*.*$//; # Remove stuff like ** INVALID ** and ** FUNKY **
  		$xtag =~ tr/_/\./ if ( $opt_u );
  		$xtag =~ s/[\/]/$opt_s/g;
-		
+
  		my $pid = open2($in, $out, 'git-mktag');
  		print $out "object $cid\n".
  		    "type commit\n".
@@ -788,7 +788,7 @@ sub commit {
  		     $? != 0 or $tagobj !~ /^[0123456789abcdef]{40}$/ ) {
  		    die "Cannot create tag object $xtag: $!\n";
  	        }
-		
+

  		open(C,">$git_dir/refs/tags/$xtag")
  			or die "Cannot create tag $xtag: $!\n";
diff --git a/git-gui/lib/class.tcl b/git-gui/lib/class.tcl
index 88b0565..72494c1 100644
--- a/git-gui/lib/class.tcl
+++ b/git-gui/lib/class.tcl
@@ -151,4 +151,3 @@ auto_mkindex_parser::command constructor {name args} {
  		[format { [list source [file join $dir %s]]} \
  		[file split $scriptFile]] "\n"
  }
-
diff --git a/git-p4import.py b/git-p4import.py
index 60a758b..0f3d97b 100644
--- a/git-p4import.py
+++ b/git-p4import.py
@@ -358,4 +358,3 @@ for id in changes:
      if stitch == 1:
          git.clean_directories()
          stitch = 0
-
diff --git a/git-svnimport.perl b/git-svnimport.perl
index 3af8c7e..f459762 100755
--- a/git-svnimport.perl
+++ b/git-svnimport.perl
@@ -542,7 +542,7 @@ sub copy_path($$$$$$$$) {
  	if ($node_kind eq $SVN::Node::dir) {
  		$srcpath =~ s#/*$#/#;
  	}
-	
+
  	my $pid = open my $f,'-|';
  	die $! unless defined $pid;
  	if (!$pid) {
@@ -560,7 +560,7 @@ sub copy_path($$$$$$$$) {
  		} else {
  			$p = $path;
  		}
-		push(@$new,[$mode,$sha1,$p]);	
+		push(@$new,[$mode,$sha1,$p]);
  	}
  	close($f) or
  		print STDERR "$newrev:$newbranch: could not list files in $oldpath \@ $rev\n";
diff --git a/gitk b/gitk
index a57e84c..87c3690 100755
--- a/gitk
+++ b/gitk
@@ -337,7 +337,7 @@ proc readrefs {} {
  		    set tagids($name) $commit
  		    lappend idtags($commit) $name
  		}
-	    }		
+	    }
  	    catch {
  	        set tagcontents($name) [exec git cat-file tag $id]
  	    }
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* [PATCH 3/6] Remove whitespace breakage from *.sh files
From: Marco Costalba @ 2007-05-20 10:27 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Using 'git apply --whitespace=strip'

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
  contrib/remotes2config.sh |    2 --
  git-applymbox.sh          |    4 ++--
  git-checkout.sh           |    4 ++--
  git-clone.sh              |    5 ++---
  git-commit.sh             |    2 +-
  git-merge-one-file.sh     |    2 +-
  git-tag.sh                |    5 ++---
  git-verify-tag.sh         |    1 -
  8 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/contrib/remotes2config.sh b/contrib/remotes2config.sh
index dc09eae..0c8b954 100644
--- a/contrib/remotes2config.sh
+++ b/contrib/remotes2config.sh
@@ -31,5 +31,3 @@ if [ -d "$GIT_DIR"/remotes ]; then
  		esac
  	done
  fi
-
-
diff --git a/git-applymbox.sh b/git-applymbox.sh
index c18e80f..c51b2ff 100755
--- a/git-applymbox.sh
+++ b/git-applymbox.sh
@@ -69,7 +69,7 @@ set x .dotest/0*
  shift
  while case "$#" in 0) break;; esac
  do
-    i="$1"
+    i="$1"
      case "$resume,$continue" in
      f,$i)	resume=t;;
      f,*)	shift
@@ -94,7 +94,7 @@ do
  		;;
  	2)
  		# 2 is a special exit code from applypatch to indicate that
-	    	# the patch wasn't applied, but continue anyway
+		# the patch wasn't applied, but continue anyway
  		;;
  	*)
  		ret=$?
diff --git a/git-checkout.sh b/git-checkout.sh
index ed7c2c5..1ea4226 100755
--- a/git-checkout.sh
+++ b/git-checkout.sh
@@ -210,7 +210,7 @@ else
  	esac

  	# Match the index to the working tree, and do a three-way.
-    	git diff-files --name-only | git update-index --remove --stdin &&
+	git diff-files --name-only | git update-index --remove --stdin &&
  	work=`git write-tree` &&
  	git read-tree $v --reset -u $new || exit

@@ -245,7 +245,7 @@ else
      (exit $saved_err)
  fi

-#
+#
  # Switch the HEAD pointer to the new branch if we
  # checked out a branch head, and remove any potential
  # old MERGE_HEAD's (subsequent commits will clearly not
diff --git a/git-clone.sh b/git-clone.sh
index fdd354f..5bfd8d1 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -2,7 +2,7 @@
  #
  # Copyright (c) 2005, Linus Torvalds
  # Copyright (c) 2005, Junio C Hamano
-#
+#
  # Clone a repository into a different directory that does not yet exist.

  # See git-sh-setup why.
@@ -98,7 +98,7 @@ while
  	*,--na|*,--nak|*,--nake|*,--naked|\
  	*,-b|*,--b|*,--ba|*,--bar|*,--bare) bare=yes ;;
  	*,-l|*,--l|*,--lo|*,--loc|*,--loca|*,--local) use_local=yes ;;
-        *,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared)
+        *,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared)
            local_shared=yes; use_local=yes ;;
  	1,--template) usage ;;
  	*,--template)
@@ -410,4 +410,3 @@ fi
  rm -f "$GIT_DIR/CLONE_HEAD" "$GIT_DIR/REMOTE_HEAD"

  trap - 0
-
diff --git a/git-commit.sh b/git-commit.sh
index f28fc24..5b560f9 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -557,7 +557,7 @@ then
  	} >>"$GIT_DIR"/COMMIT_EDITMSG
  else
  	# we need to check if there is anything to commit
-	run_status >/dev/null
+	run_status >/dev/null
  fi
  if [ "$?" != "0" -a ! -f "$GIT_DIR/MERGE_HEAD" -a -z "$amend" ]
  then
diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh
index 7d62d79..254d210 100755
--- a/git-merge-one-file.sh
+++ b/git-merge-one-file.sh
@@ -88,7 +88,7 @@ case "${1:-.}${2:-.}${3:-.}" in
  		# remove lines that are unique to ours.
  		orig=`git-unpack-file $2`
  		sz0=`wc -c <"$orig"`
-		diff -u -La/$orig -Lb/$orig $orig $src2 | git-apply --no-add
+		diff -u -La/$orig -Lb/$orig $orig $src2 | git-apply --no-add
  		sz1=`wc -c <"$orig"`

  		# If we do not have enough common material, it is not
diff --git a/git-tag.sh b/git-tag.sh
index 4a0a7b6..3f080bf 100755
--- a/git-tag.sh
+++ b/git-tag.sh
@@ -36,7 +36,7 @@ do
  	exit $?
  	;;
      -m)
-    	annotate=1
+	annotate=1
  	shift
  	message="$1"
  	if test "$#" = "0"; then
@@ -62,7 +62,7 @@ do
  	username="$1"
  	;;
      -d)
-    	shift
+	shift
  	had_error=0
  	for tag
  	do
@@ -150,4 +150,3 @@ if [ "$annotate" ]; then
  fi

  git update-ref "refs/tags/$name" "$object" "$prev"
-
diff --git a/git-verify-tag.sh b/git-verify-tag.sh
index 8db7dd0..f2d5597 100755
--- a/git-verify-tag.sh
+++ b/git-verify-tag.sh
@@ -42,4 +42,3 @@ cat "$GIT_DIR/.tmp-vtag" |
  sed '/-----BEGIN PGP/Q' |
  gpg --verify "$GIT_DIR/.tmp-vtag" - || exit 1
  rm -f "$GIT_DIR/.tmp-vtag"
-
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* Re: [PATCH 1/3] Added generic string handling code.
From: Timo Sirainen @ 2007-05-20 10:27 UTC (permalink / raw)
  To: Alex Riesen; +Cc: git
In-Reply-To: <20070520100155.GB3106@steel.home>

[-- Attachment #1: Type: text/plain, Size: 1245 bytes --]

On 20.5.2007, at 13.01, Alex Riesen wrote:

> Timo Sirainen, Sun, May 20, 2007 04:24:29 +0200:
>> So here's my try on starting with something simple. Unlike almost all
>> other string handling libraries, it doesn't allocate the memory
>> dynamically.
>
> Sometimes you _need_ dinamic memory allocation.

It's easy to use the same str_*() functions to implement dynamic  
memory allocation. I think I could have done a bit different naming,  
like maybe:

extern struct string *str_alloc(unsigned int len);
extern void str_append(struct string *str, const char *cstr);

#define static_string(name, size) ..
#define sstr_append(str, cstr) str_append(&(str).string, cstr)


>> This makes it really easy to convert existing code to use it. I'm
>> including some example changes in the other patches. Besides making
>> the code safer, it can also make it faster, especially those
>> strcat() replacements.
>
> It is also bigger, heavier on stack and sometimes slower because of
> more function calls involved.

I would hardly call 8 extra bytes on stack heavier. Also if this was  
used everywhere I wouldn't be surprised if it made the code faster,  
because it would remove a lot of overflow checking code so more code  
will fit into L1 cache.




[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 186 bytes --]

^ permalink raw reply

* [PATCH 2/6] Remove whitespace breakage from *.h files
From: Marco Costalba @ 2007-05-20 10:27 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Using 'git apply --whitespace=strip'

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
  cache.h             |    2 +-
  commit.h            |    2 +-
  mozilla-sha1/sha1.h |   18 +++++++++---------
  object.h            |    2 +-
  rsh.h               |    2 +-
  xdiff/xdiff.h       |    1 -
  xdiff/xdiffi.h      |    1 -
  xdiff/xemit.h       |    1 -
  xdiff/xinclude.h    |    1 -
  xdiff/xmacros.h     |    1 -
  xdiff/xprepare.h    |    1 -
  xdiff/xtypes.h      |    1 -
  xdiff/xutils.h      |    1 -
  13 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/cache.h b/cache.h
index 4204bc1..9720129 100644
--- a/cache.h
+++ b/cache.h
@@ -480,7 +480,7 @@ extern void prepare_packed_git(void);
  extern void reprepare_packed_git(void);
  extern void install_packed_git(struct packed_git *pack);

-extern struct packed_git *find_sha1_pack(const unsigned char *sha1,
+extern struct packed_git *find_sha1_pack(const unsigned char *sha1,
  					 struct packed_git *packs);

  extern void pack_report(void);
diff --git a/commit.h b/commit.h
index 86e8dca..75b43a5 100644
--- a/commit.h
+++ b/commit.h
@@ -66,7 +66,7 @@ extern unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit
  /** Removes the first commit from a list sorted by date, and adds all
   * of its parents.
   **/
-struct commit *pop_most_recent_commit(struct commit_list **list,
+struct commit *pop_most_recent_commit(struct commit_list **list,
  				      unsigned int mark);

  struct commit *pop_commit(struct commit_list **stack);
diff --git a/mozilla-sha1/sha1.h b/mozilla-sha1/sha1.h
index 5d82afa..16f2d3d 100644
--- a/mozilla-sha1/sha1.h
+++ b/mozilla-sha1/sha1.h
@@ -1,29 +1,29 @@
-/*
+/*
   * The contents of this file are subject to the Mozilla Public
   * License Version 1.1 (the "License"); you may not use this file
   * except in compliance with the License. You may obtain a copy of
   * the License at http://www.mozilla.org/MPL/
- *
+ *
   * Software distributed under the License is distributed on an "AS
   * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
   * implied. See the License for the specific language governing
   * rights and limitations under the License.
- *
+ *
   * The Original Code is SHA 180-1 Header File
- *
+ *
   * The Initial Developer of the Original Code is Paul Kocher of
- * Cryptography Research.  Portions created by Paul Kocher are
+ * Cryptography Research.  Portions created by Paul Kocher are
   * Copyright (C) 1995-9 by Cryptography Research, Inc.  All
   * Rights Reserved.
- *
+ *
   * Contributor(s):
   *
   *     Paul Kocher
- *
+ *
   * Alternatively, the contents of this file may be used under the
   * terms of the GNU General Public License Version 2 or later (the
- * "GPL"), in which case the provisions of the GPL are applicable
- * instead of those above.  If you wish to allow use of your
+ * "GPL"), in which case the provisions of the GPL are applicable
+ * instead of those above.  If you wish to allow use of your
   * version of this file only under the terms of the GPL and not to
   * allow others to use your version of this file under the MPL,
   * indicate your decision by deleting the provisions above and
diff --git a/object.h b/object.h
index 94f19ee..397bbfa 100644
--- a/object.h
+++ b/object.h
@@ -66,7 +66,7 @@ void set_object_refs(struct object *obj, struct object_refs *refs);

  void mark_reachable(struct object *obj, unsigned int mask);

-struct object_list *object_list_insert(struct object *item,
+struct object_list *object_list_insert(struct object *item,
  				       struct object_list **list_p);

  void object_list_append(struct object *item,
diff --git a/rsh.h b/rsh.h
index 3b41942..ee2f499 100644
--- a/rsh.h
+++ b/rsh.h
@@ -1,7 +1,7 @@
  #ifndef RSH_H
  #define RSH_H

-int setup_connection(int *fd_in, int *fd_out, const char *remote_prog,
+int setup_connection(int *fd_in, int *fd_out, const char *remote_prog,
  		     char *url, int rmt_argc, char **rmt_argv);

  #endif
diff --git a/xdiff/xdiff.h b/xdiff/xdiff.h
index e874a7c..9402bb0 100644
--- a/xdiff/xdiff.h
+++ b/xdiff/xdiff.h
@@ -103,4 +103,3 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
  #endif /* #ifdef __cplusplus */

  #endif /* #if !defined(XDIFF_H) */
-
diff --git a/xdiff/xdiffi.h b/xdiff/xdiffi.h
index 472aeae..3e099dc 100644
--- a/xdiff/xdiffi.h
+++ b/xdiff/xdiffi.h
@@ -57,4 +57,3 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
  		  xdemitconf_t const *xecfg);

  #endif /* #if !defined(XDIFFI_H) */
-
diff --git a/xdiff/xemit.h b/xdiff/xemit.h
index e629417..440a739 100644
--- a/xdiff/xemit.h
+++ b/xdiff/xemit.h
@@ -31,4 +31,3 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,


  #endif /* #if !defined(XEMIT_H) */
-
diff --git a/xdiff/xinclude.h b/xdiff/xinclude.h
index 04a9da8..526ccb3 100644
--- a/xdiff/xinclude.h
+++ b/xdiff/xinclude.h
@@ -40,4 +40,3 @@


  #endif /* #if !defined(XINCLUDE_H) */
-
diff --git a/xdiff/xmacros.h b/xdiff/xmacros.h
index e2cd202..8ef232c 100644
--- a/xdiff/xmacros.h
+++ b/xdiff/xmacros.h
@@ -51,4 +51,3 @@ do { \


  #endif /* #if !defined(XMACROS_H) */
-
diff --git a/xdiff/xprepare.h b/xdiff/xprepare.h
index 344c569..8fb06a5 100644
--- a/xdiff/xprepare.h
+++ b/xdiff/xprepare.h
@@ -32,4 +32,3 @@ void xdl_free_env(xdfenv_t *xe);


  #endif /* #if !defined(XPREPARE_H) */
-
diff --git a/xdiff/xtypes.h b/xdiff/xtypes.h
index 3593a66..2511aef 100644
--- a/xdiff/xtypes.h
+++ b/xdiff/xtypes.h
@@ -65,4 +65,3 @@ typedef struct s_xdfenv {


  #endif /* #if !defined(XTYPES_H) */
-
diff --git a/xdiff/xutils.h b/xdiff/xutils.h
index 70d8b98..d5de829 100644
--- a/xdiff/xutils.h
+++ b/xdiff/xutils.h
@@ -45,4 +45,3 @@ int xdl_emit_hunk_hdr(long s1, long c1, long s2, long c2,


  #endif /* #if !defined(XUTILS_H) */
-
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* [PATCH 1/6] Remove whitespace breakage from *.c files
From: Marco Costalba @ 2007-05-20 10:25 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

This patch removes whitespace found with the following
commands, as suggested by Junio. Suggestion to do not consider
also Documentation/ directory is from Johannes.

$ git checkout master
$ rm -f .git/index
$ git checkout HEAD -- t/ Documentation/
$ git clean -x -d
$ git diff -R --binary HEAD >P.diff
$ git apply --index --whitespace=strip P.diff

'git apply' has been modified to trim empty lines at the end of file.

This patch applies to *.c files only

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
  arm/sha1.c              |    4 ++--
  builtin-annotate.c      |    1 -
  builtin-diff-index.c    |    2 +-
  builtin-fmt-merge-msg.c |    1 -
  builtin-fsck.c          |    4 ++--
  builtin-ls-files.c      |    2 +-
  builtin-name-rev.c      |    1 -
  builtin-pack-objects.c  |    2 +-
  builtin-rerere.c        |    1 -
  builtin-shortlog.c      |    1 -
  commit.c                |   14 +++++++-------
  compat/mmap.c           |    1 -
  config.c                |    3 +--
  connect.c               |    2 +-
  convert-objects.c       |    2 +-
  copy.c                  |    1 -
  ctype.c                 |    1 -
  daemon.c                |    4 ++--
  date.c                  |   10 +++++-----
  diff-lib.c              |    2 +-
  diff.c                  |    4 ++--
  diffcore-pickaxe.c      |    2 +-
  entry.c                 |    2 +-
  environment.c           |    2 --
  fetch-pack.c            |    2 +-
  fetch.c                 |    4 ++--
  help.c                  |    2 --
  http-fetch.c            |    2 +-
  http-push.c             |    2 +-
  http.c                  |    2 +-
  imap-send.c             |    2 +-
  local-fetch.c           |    8 ++++----
  lockfile.c              |    1 -
  mailmap.c               |    1 -
  match-trees.c           |    1 -
  merge-index.c           |    2 +-
  mktag.c                 |    2 +-
  mozilla-sha1/sha1.c     |   19 +++++++++----------
  object-refs.c           |    2 --
  pack-redundant.c        |    4 ++--
  patch-id.c              |    2 +-
  path-list.c             |    1 -
  pkt-line.c              |    2 +-
  ppc/sha1.c              |    2 +-
  read-cache.c            |   10 +++++-----
  setup.c                 |    4 ++--
  sha1_file.c             |    8 ++++----
  shallow.c               |    1 -
  ssh-upload.c            |   10 +++++-----
  strbuf.c                |    1 -
  tree-walk.c             |    1 -
  upload-pack.c           |    2 +-
  var.c                   |    4 ++--
  xdiff-interface.c       |    2 --
  xdiff/xdiffi.c          |    1 -
  xdiff/xemit.c           |    1 -
  xdiff/xprepare.c        |    1 -
  xdiff/xutils.c          |    1 -
  58 files changed, 75 insertions(+), 104 deletions(-)

diff --git a/arm/sha1.c b/arm/sha1.c
index 11b1a04..9e3ae03 100644
--- a/arm/sha1.c
+++ b/arm/sha1.c
@@ -49,7 +49,7 @@ void SHA1_Update(SHA_CTX *c, const void *p, unsigned long n)
  void SHA1_Final(unsigned char *hash, SHA_CTX *c)
  {
  	uint64_t bitlen;
-	uint32_t bitlen_hi, bitlen_lo;
+	uint32_t bitlen_hi, bitlen_lo;
  	unsigned int i, offset, padlen;
  	unsigned char bits[8];
  	static const unsigned char padding[64] = { 0x80, };
@@ -69,7 +69,7 @@ void SHA1_Final(unsigned char *hash, SHA_CTX *c)
  	bits[5] = bitlen_lo >> 16;
  	bits[6] = bitlen_lo >> 8;
  	bits[7] = bitlen_lo;
-	SHA1_Update(c, bits, 8);
+	SHA1_Update(c, bits, 8);

  	for (i = 0; i < 5; i++) {
  		uint32_t v = c->hash[i];
diff --git a/builtin-annotate.c b/builtin-annotate.c
index 9db7cfe..fc43eed 100644
--- a/builtin-annotate.c
+++ b/builtin-annotate.c
@@ -22,4 +22,3 @@ int cmd_annotate(int argc, const char **argv, const char *prefix)

  	return cmd_blame(argc + 1, nargv, prefix);
  }
-
diff --git a/builtin-diff-index.c b/builtin-diff-index.c
index d90eba9..81e7167 100644
--- a/builtin-diff-index.c
+++ b/builtin-diff-index.c
@@ -23,7 +23,7 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
  	argc = setup_revisions(argc, argv, &rev, NULL);
  	for (i = 1; i < argc; i++) {
  		const char *arg = argv[i];
-			
+
  		if (!strcmp(arg, "--cached"))
  			cached = 1;
  		else
diff --git a/builtin-fmt-merge-msg.c b/builtin-fmt-merge-msg.c
index 5c145d2..ae60fcc 100644
--- a/builtin-fmt-merge-msg.c
+++ b/builtin-fmt-merge-msg.c
@@ -357,4 +357,3 @@ int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)

  	return 0;
  }
-
diff --git a/builtin-fsck.c b/builtin-fsck.c
index 44ce629..3c7e30d 100644
--- a/builtin-fsck.c
+++ b/builtin-fsck.c
@@ -336,7 +336,7 @@ static int fsck_commit(struct commit *commit)
  	if (!commit->parents && show_root)
  		printf("root %s\n", sha1_to_hex(commit->object.sha1));
  	if (!commit->date)
-		printf("bad commit date in %s\n",
+		printf("bad commit date in %s\n",
  		       sha1_to_hex(commit->object.sha1));
  	return 0;
  }
@@ -676,7 +676,7 @@ int cmd_fsck(int argc, char **argv, const char *prefix)

  	heads = 0;
  	for (i = 1; i < argc; i++) {
-		const char *arg = argv[i];
+		const char *arg = argv[i];

  		if (*arg == '-')
  			continue;
diff --git a/builtin-ls-files.c b/builtin-ls-files.c
index f7c066b..5398a41 100644
--- a/builtin-ls-files.c
+++ b/builtin-ls-files.c
@@ -117,7 +117,7 @@ static void show_other_files(struct dir_struct *dir)
  		if (0 <= pos)
  			continue;	/* exact match */
  		pos = -pos - 1;
-		if (pos < active_nr) {
+		if (pos < active_nr) {
  			ce = active_cache[pos];
  			if (ce_namelen(ce) == len &&
  			    !memcmp(ce->name, ent->name, len))
diff --git a/builtin-name-rev.c b/builtin-name-rev.c
index ef16385..59e6a83 100644
--- a/builtin-name-rev.c
+++ b/builtin-name-rev.c
@@ -275,4 +275,3 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)

  	return 0;
  }
-
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 966f843..3ba1f09 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -242,7 +242,7 @@ static void *delta_against(void *buf, unsigned long size, struct object_entry *e
          delta_buf = diff_delta(otherbuf, othersize,
  			       buf, size, &delta_size, 0);
          if (!delta_buf || delta_size != entry->delta_size)
-        	die("delta size changed");
+		die("delta size changed");
          free(buf);
          free(otherbuf);
  	return delta_buf;
diff --git a/builtin-rerere.c b/builtin-rerere.c
index 8c2c8bd..f6409b9 100644
--- a/builtin-rerere.c
+++ b/builtin-rerere.c
@@ -434,4 +434,3 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
  	path_list_clear(&merge_rr, 1);
  	return 0;
  }
-
diff --git a/builtin-shortlog.c b/builtin-shortlog.c
index 8d3f742..16af619 100644
--- a/builtin-shortlog.c
+++ b/builtin-shortlog.c
@@ -331,4 +331,3 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)

  	return 0;
  }
-
diff --git a/commit.c b/commit.c
index bee066f..6993663 100644
--- a/commit.c
+++ b/commit.c
@@ -148,7 +148,7 @@ static int commit_graft_pos(const unsigned char *sha1)
  int register_commit_graft(struct commit_graft *graft, int ignore_dups)
  {
  	int pos = commit_graft_pos(graft->sha1);
-	
+
  	if (0 <= pos) {
  		if (ignore_dups)
  			free(graft);
@@ -406,7 +406,7 @@ struct commit_list * insert_by_date(struct commit *item, struct commit_list **li
  	return commit_list_insert(item, pp);
  }

-	
+
  void sort_by_date(struct commit_list **list)
  {
  	struct commit_list *ret = NULL;
@@ -1156,7 +1156,7 @@ void sort_in_topological_order_fn(struct commit_list ** list, int lifo,
  		next = next->next;
  		count++;
  	}
-	
+
  	if (!count)
  		return;
  	/* allocate an array to help sort the list */
@@ -1184,11 +1184,11 @@ void sort_in_topological_order_fn(struct commit_list ** list, int lifo,
  		}
  		next=next->next;
  	}
-	/*
+	/*
           * find the tips
           *
-         * tips are nodes not reachable from any other node in the list
-         *
+         * tips are nodes not reachable from any other node in the list
+         *
           * the tips serve as a starting set for the work queue.
           */
  	next=*list;
@@ -1216,7 +1216,7 @@ void sort_in_topological_order_fn(struct commit_list ** list, int lifo,

  			if (pn) {
  				/*
-				 * parents are only enqueued for emission
+				 * parents are only enqueued for emission
                                   * when all their children have been emitted thereby
                                   * guaranteeing topological order.
                                   */
diff --git a/compat/mmap.c b/compat/mmap.c
index 4cfaee3..c9d46d1 100644
--- a/compat/mmap.c
+++ b/compat/mmap.c
@@ -40,4 +40,3 @@ int git_munmap(void *start, size_t length)
  	free(start);
  	return 0;
  }
-
diff --git a/config.c b/config.c
index 7b655fd..8d37aa6 100644
--- a/config.c
+++ b/config.c
@@ -610,7 +610,7 @@ static ssize_t find_beginning_of_line(const char* contents, size_t size,
  	size_t equal_offset = size, bracket_offset = size;
  	ssize_t offset;

-	for (offset = offset_-2; offset > 0
+	for (offset = offset_-2; offset > 0
  			&& contents[offset] != '\n'; offset--)
  		switch (contents[offset]) {
  			case '=': equal_offset = offset; break;
@@ -978,4 +978,3 @@ int git_config_rename_section(const char *old_name, const char *new_name)
  	free(config_filename);
  	return ret;
  }
-
diff --git a/connect.c b/connect.c
index da89c9c..4382d43 100644
--- a/connect.c
+++ b/connect.c
@@ -574,7 +574,7 @@ static int git_proxy_command_options(const char *var, const char *value)
  		}
  		if (0 <= matchlen) {
  			/* core.gitproxy = none for kernel.org */
-			if (matchlen == 4 &&
+			if (matchlen == 4 &&
  			    !memcmp(value, "none", 4))
  				matchlen = 0;
  			git_proxy_command = xmalloc(matchlen + 1);
diff --git a/convert-objects.c b/convert-objects.c
index cefbceb..90e7900 100644
--- a/convert-objects.c
+++ b/convert-objects.c
@@ -194,7 +194,7 @@ static unsigned long parse_oldstyle_date(const char *buf)
  		fmt++;
  	} while (*buf && *fmt);
  	printf("left: %s\n", buf);
-	return mktime(&tm);				
+	return mktime(&tm);
  }

  static int convert_date_line(char *dst, void **buf, unsigned long *sp)
diff --git a/copy.c b/copy.c
index d340bb2..c225d1b 100644
--- a/copy.c
+++ b/copy.c
@@ -34,4 +34,3 @@ int copy_fd(int ifd, int ofd)
  	close(ifd);
  	return 0;
  }
-
diff --git a/ctype.c b/ctype.c
index 56bdffa..ee06eb7 100644
--- a/ctype.c
+++ b/ctype.c
@@ -20,4 +20,3 @@ unsigned char sane_ctype[256] = {
  	AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,  0,  0,  0,  0,  0,		/* 112-15 */
  	/* Nothing in the 128.. range */
  };
-
diff --git a/daemon.c b/daemon.c
index e74ecac..a30324f 100644
--- a/daemon.c
+++ b/daemon.c
@@ -133,7 +133,7 @@ static int avoid_alias(char *p)
  {
  	int sl, ndot;

-	/*
+	/*
  	 * This resurrects the belts and suspenders paranoia check by HPA
  	 * done in <435560F7.4080006@zytor.com> thread, now enter_repo()
  	 * does not do getcwd() based path canonicalizations.
@@ -247,7 +247,7 @@ static char *path_ok(struct interp *itable)
  		int pathlen = strlen(path);

  		/* The validation is done on the paths after enter_repo
-		 * appends optional {.git,.git/.git} and friends, but
+		 * appends optional {.git,.git/.git} and friends, but
  		 * it does not use getcwd().  So if your /pub is
  		 * a symlink to /mnt/pub, you can whitelist /pub and
  		 * do not have to say /mnt/pub.
diff --git a/date.c b/date.c
index a9b59a2..a5407f5 100644
--- a/date.c
+++ b/date.c
@@ -403,7 +403,7 @@ static int match_multi_number(unsigned long num, char c, const char *date, char
  }

  /*
- * We've seen a digit. Time? Year? Date?
+ * We've seen a digit. Time? Year? Date?
   */
  static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt)
  {
@@ -493,7 +493,7 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt
  	} else if (num > 0 && num < 13) {
  		tm->tm_mon = num-1;
  	}
-		
+
  	return n;
  }

@@ -567,13 +567,13 @@ int parse_date(const char *date, char *result, int maxlen)
  		if (!match) {
  			/* BAD CRAP */
  			match = 1;
-		}	
+		}

  		date += match;
  	}

  	/* mktime uses local timezone */
-	then = my_mktime(&tm);
+	then = my_mktime(&tm);
  	if (offset == -1)
  		offset = (then - mktime(&tm)) / 60;

@@ -689,7 +689,7 @@ static const struct typelen {
  	{ "days", 24*60*60 },
  	{ "weeks", 7*24*60*60 },
  	{ NULL }
-};	
+};

  static const char *approxidate_alpha(const char *date, struct tm *tm, int *num)
  {
diff --git a/diff-lib.c b/diff-lib.c
index 07f4e81..7fb19c7 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -664,7 +664,7 @@ int run_diff_index(struct rev_info *revs, int cached)
  	const char *tree_name;
  	int match_missing = 0;

-	/*
+	/*
  	 * Backward compatibility wart - "diff-index -m" does
  	 * not mean "do not ignore merges", but totally different.
  	 */
diff --git a/diff.c b/diff.c
index 33297aa..393c37a 100644
--- a/diff.c
+++ b/diff.c
@@ -3038,7 +3038,7 @@ void diff_addremove(struct diff_options *options,
  	 * entries to the diff-core.  They will be prefixed
  	 * with something like '=' or '*' (I haven't decided
  	 * which but should not make any difference).
-	 * Feeding the same new and old to diff_change()
+	 * Feeding the same new and old to diff_change()
  	 * also has the same effect.
  	 * Before the final output happens, they are pruned after
  	 * merged into rename/copy pairs as appropriate.
@@ -3065,7 +3065,7 @@ void diff_change(struct diff_options *options,
  		 unsigned old_mode, unsigned new_mode,
  		 const unsigned char *old_sha1,
  		 const unsigned char *new_sha1,
-		 const char *base, const char *path)
+		 const char *base, const char *path)
  {
  	char concatpath[PATH_MAX];
  	struct diff_filespec *one, *two;
diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c
index c4a77d7..af9fffe 100644
--- a/diffcore-pickaxe.c
+++ b/diffcore-pickaxe.c
@@ -102,7 +102,7 @@ void diffcore_pickaxe(const char *needle, int opts)
  		for (i = 0; i < q->nr; i++)
  			diff_free_filepair(q->queue[i]);
  	}
-	else
+	else
  		/* Showing only the filepairs that has the needle */
  		for (i = 0; i < q->nr; i++) {
  			struct diff_filepair *p = q->queue[i];
diff --git a/entry.c b/entry.c
index 82bf725..581de3f 100644
--- a/entry.c
+++ b/entry.c
@@ -31,7 +31,7 @@ static void remove_subtree(const char *path)
  	struct dirent *de;
  	char pathbuf[PATH_MAX];
  	char *name;
-	
+
  	if (!dir)
  		die("cannot opendir %s (%s)", path, strerror(errno));
  	strcpy(pathbuf, path);
diff --git a/environment.c b/environment.c
index 2231659..a8855d3 100644
--- a/environment.c
+++ b/environment.c
@@ -104,5 +104,3 @@ char *get_graft_file(void)
  		setup_git_env();
  	return git_graft_file;
  }
-
-
diff --git a/fetch-pack.c b/fetch-pack.c
index 06f4aec..b6cb655 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -114,7 +114,7 @@ static const unsigned char* get_rev(void)
  		commit->object.flags |= POPPED;
  		if (!(commit->object.flags & COMMON))
  			non_common_revs--;
-	
+
  		parents = commit->parents;

  		if (commit->object.flags & COMMON) {
diff --git a/fetch.c b/fetch.c
index 8e29d31..dda33e5 100644
--- a/fetch.c
+++ b/fetch.c
@@ -15,7 +15,7 @@ int get_verbosely = 0;
  int get_recover = 0;
  static unsigned char current_commit_sha1[20];

-void pull_say(const char *fmt, const char *hex)
+void pull_say(const char *fmt, const char *hex)
  {
  	if (get_verbosely)
  		fprintf(stderr, fmt, hex);
@@ -153,7 +153,7 @@ static int process(struct object *obj)
  			return 0;
  		prefetch(obj->sha1);
  	}
-		
+
  	object_list_insert(obj, process_queue_end);
  	process_queue_end = &(*process_queue_end)->next;
  	return 0;
diff --git a/help.c b/help.c
index 6a9af4d..1cd33ec 100644
--- a/help.c
+++ b/help.c
@@ -219,5 +219,3 @@ int cmd_help(int argc, const char **argv, const char *prefix)

  	return 0;
  }
-
-
diff --git a/http-fetch.c b/http-fetch.c
index 09baedc..202fae0 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -828,7 +828,7 @@ static void abort_object_request(struct object_request *obj_req)
  	}
  	unlink(obj_req->tmpfile);
  	if (obj_req->slot) {
- 		release_active_slot(obj_req->slot);
+		release_active_slot(obj_req->slot);
  		obj_req->slot = NULL;
  	}
  	release_object_request(obj_req);
diff --git a/http-push.c b/http-push.c
index e3f7675..c54ad9d 100644
--- a/http-push.c
+++ b/http-push.c
@@ -517,7 +517,7 @@ static void start_put(struct transfer_request *request)
  	request->buffer.size = stream.total_out;
  	request->buffer.posn = 0;

-	request->url = xmalloc(strlen(remote->url) +
+	request->url = xmalloc(strlen(remote->url) +
  			       strlen(request->lock->token) + 51);
  	strcpy(request->url, remote->url);
  	posn = request->url + strlen(remote->url);
diff --git a/http.c b/http.c
index ae27e0c..c6fb8ac 100644
--- a/http.c
+++ b/http.c
@@ -137,7 +137,7 @@ static int http_options(const char *var, const char *value)
  		return 0;
  	}

-#ifdef USE_CURL_MULTI	
+#ifdef USE_CURL_MULTI
  	if (!strcmp("http.maxrequests", var)) {
  		if (max_requests == -1)
  			max_requests = git_config_int(var, value);
diff --git a/imap-send.c b/imap-send.c
index 4283a4a..a5a0696 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -1239,7 +1239,7 @@ split_msg( msg_data_t *all_msgs, msg_data_t *msg, int *ofs )
  	msg->data[ msg->len ] = 0;

  	*ofs += msg->len;
- 	return 1;
+	return 1;
  }

  static imap_server_conf_t server =
diff --git a/local-fetch.c b/local-fetch.c
index 4b650ef..bf7ec6c 100644
--- a/local-fetch.c
+++ b/local-fetch.c
@@ -114,7 +114,7 @@ static int fetch_pack(const unsigned char *sha1)
  		return -1;
  	target = find_sha1_pack(sha1, packs);
  	if (!target)
-		return error("Couldn't find %s: not separate or in any pack",
+		return error("Couldn't find %s: not separate or in any pack",
  			     sha1_to_hex(sha1));
  	if (get_verbosely) {
  		fprintf(stderr, "Getting pack %s\n",
@@ -122,11 +122,11 @@ static int fetch_pack(const unsigned char *sha1)
  		fprintf(stderr, " which contains %s\n",
  			sha1_to_hex(sha1));
  	}
-	sprintf(filename, "%s/objects/pack/pack-%s.pack",
+	sprintf(filename, "%s/objects/pack/pack-%s.pack",
  		path, sha1_to_hex(target->sha1));
  	copy_file(filename, sha1_pack_name(target->sha1),
  		  sha1_to_hex(target->sha1), 1);
-	sprintf(filename, "%s/objects/pack/pack-%s.idx",
+	sprintf(filename, "%s/objects/pack/pack-%s.idx",
  		path, sha1_to_hex(target->sha1));
  	copy_file(filename, sha1_pack_index_name(target->sha1),
  		  sha1_to_hex(target->sha1), 1);
@@ -141,7 +141,7 @@ static int fetch_file(const unsigned char *sha1)
  	char *hex = sha1_to_hex(sha1);
  	char *dest_filename = sha1_file_name(sha1);

- 	if (object_name_start < 0) {
+	if (object_name_start < 0) {
  		strcpy(filename, path); /* e.g. git.git */
  		strcat(filename, "/objects/");
  		object_name_start = strlen(filename);
diff --git a/lockfile.c b/lockfile.c
index 23db35a..5ad2858 100644
--- a/lockfile.c
+++ b/lockfile.c
@@ -97,4 +97,3 @@ void rollback_lock_file(struct lock_file *lk)
  		unlink(lk->filename);
  	lk->filename[0] = 0;
  }
-
diff --git a/mailmap.c b/mailmap.c
index cb567a2..8714167 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -89,4 +89,3 @@ int map_email(struct path_list *map, const char *email, char *name, int maxlen)
  	}
  	return 0;
  }
-
diff --git a/match-trees.c b/match-trees.c
index 23cafe4..d7e29c4 100644
--- a/match-trees.c
+++ b/match-trees.c
@@ -301,4 +301,3 @@ void shift_tree(const unsigned char *hash1,

  	splice_tree(hash1, add_prefix, hash2, shifted);
  }
-
diff --git a/merge-index.c b/merge-index.c
index 5599fd3..fa719cb 100644
--- a/merge-index.c
+++ b/merge-index.c
@@ -25,7 +25,7 @@ static void run_program(void)
  static int merge_entry(int pos, const char *path)
  {
  	int found;
-	
+
  	if (pos >= active_nr)
  		die("git-merge-index: %s not in the cache", path);
  	arguments[0] = pgm;
diff --git a/mktag.c b/mktag.c
index 9310111..070bc96 100644
--- a/mktag.c
+++ b/mktag.c
@@ -11,7 +11,7 @@
   * The first three lines are guaranteed to be at least 63 bytes:
   * "object <sha1>\n" is 48 bytes, "type tag\n" at 9 bytes is the
   * shortest possible type-line, and "tag .\n" at 6 bytes is the
- * shortest single-character-tag line.
+ * shortest single-character-tag line.
   *
   * We also artificially limit the size of the full object to 8kB.
   * Just because I'm a lazy bastard, and if you can't fit a signature
diff --git a/mozilla-sha1/sha1.c b/mozilla-sha1/sha1.c
index 847531d..3f06b83 100644
--- a/mozilla-sha1/sha1.c
+++ b/mozilla-sha1/sha1.c
@@ -1,29 +1,29 @@
-/*
+/*
   * The contents of this file are subject to the Mozilla Public
   * License Version 1.1 (the "License"); you may not use this file
   * except in compliance with the License. You may obtain a copy of
   * the License at http://www.mozilla.org/MPL/
- *
+ *
   * Software distributed under the License is distributed on an "AS
   * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
   * implied. See the License for the specific language governing
   * rights and limitations under the License.
- *
+ *
   * The Original Code is SHA 180-1 Reference Implementation (Compact version)
- *
+ *
   * The Initial Developer of the Original Code is Paul Kocher of
- * Cryptography Research.  Portions created by Paul Kocher are
+ * Cryptography Research.  Portions created by Paul Kocher are
   * Copyright (C) 1995-9 by Cryptography Research, Inc.  All
   * Rights Reserved.
- *
+ *
   * Contributor(s):
   *
   *     Paul Kocher
- *
+ *
   * Alternatively, the contents of this file may be used under the
   * terms of the GNU General Public License Version 2 or later (the
- * "GPL"), in which case the provisions of the GPL are applicable
- * instead of those above.  If you wish to allow use of your
+ * "GPL"), in which case the provisions of the GPL are applicable
+ * instead of those above.  If you wish to allow use of your
   * version of this file only under the terms of the GPL and not to
   * allow others to use your version of this file under the MPL,
   * indicate your decision by deleting the provisions above and
@@ -149,4 +149,3 @@ static void shaHashBlock(SHA_CTX *ctx) {
    ctx->H[3] += D;
    ctx->H[4] += E;
  }
-
diff --git a/object-refs.c b/object-refs.c
index 022e8d8..5345671 100644
--- a/object-refs.c
+++ b/object-refs.c
@@ -85,5 +85,3 @@ void mark_reachable(struct object *obj, unsigned int mask)
  			mark_reachable(refs->ref[i], mask);
  	}
  }
-
-
diff --git a/pack-redundant.c b/pack-redundant.c
index 87077e1..876071f 100644
--- a/pack-redundant.c
+++ b/pack-redundant.c
@@ -81,7 +81,7 @@ static struct llist * llist_copy(struct llist *list)
  {
  	struct llist *ret;
  	struct llist_item *new, *old, *prev;
-	
+
  	llist_init(&ret);

  	if ((ret->size = list->size) == 0)
@@ -100,7 +100,7 @@ static struct llist * llist_copy(struct llist *list)
  	}
  	new->next = NULL;
  	ret->back = new;
-	
+
  	return ret;
  }

diff --git a/patch-id.c b/patch-id.c
index 086d2d9..9349bc5 100644
--- a/patch-id.c
+++ b/patch-id.c
@@ -81,4 +81,4 @@ int main(int argc, char **argv)

  	generate_id_list();
  	return 0;
-}	
+}
diff --git a/path-list.c b/path-list.c
index caaa5cc..dcb4b3a 100644
--- a/path-list.c
+++ b/path-list.c
@@ -100,4 +100,3 @@ void print_path_list(const char *text, const struct path_list *p)
  	for (i = 0; i < p->nr; i++)
  		printf("%s:%p\n", p->items[i].path, p->items[i].util);
  }
-
diff --git a/pkt-line.c b/pkt-line.c
index b605268..355546a 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -5,7 +5,7 @@
   * Write a packetized stream, where each line is preceded by
   * its length (including the header) as a 4-byte hex number.
   * A length of 'zero' means end of stream (and a length of 1-3
- * would be an error).
+ * would be an error).
   *
   * This is all pretty stupid, but we use this packetized line
   * format to make a streaming format possible without ever
diff --git a/ppc/sha1.c b/ppc/sha1.c
index 0820398..738e36c 100644
--- a/ppc/sha1.c
+++ b/ppc/sha1.c
@@ -50,7 +50,7 @@ int SHA1_Update(SHA_CTX *c, const void *ptr, unsigned long n)
  		p += nb;
  	}
  	return 0;
-}	
+}

  int SHA1_Final(unsigned char *hash, SHA_CTX *c)
  {
diff --git a/read-cache.c b/read-cache.c
index d9f46da..0f0c827 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -166,7 +166,7 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
  		changed |= MTIME_CHANGED;
  	if (ce->ce_ctime.nsec != htonl(st->st_ctim.tv_nsec))
  		changed |= CTIME_CHANGED;
-#endif	
+#endif

  	if (ce->ce_uid != htonl(st->st_uid) ||
  	    ce->ce_gid != htonl(st->st_gid))
@@ -597,7 +597,7 @@ static int has_dir_name(struct index_state *istate,
   * is being added, or we already have path and path/file is being
   * added.  Either one would result in a nonsense tree that has path
   * twice when git-write-tree tries to write it out.  Prevent it.
- *
+ *
   * If ok-to-replace is specified, we remove the conflicting entries
   * from the cache so the caller should recompute the insert position.
   * When this happens, we return non-zero.
@@ -970,8 +970,8 @@ static int ce_write(SHA_CTX *context, int fd, void *data, unsigned int len)
  		write_buffer_len = buffered;
  		len -= partial;
  		data = (char *) data + partial;
- 	}
- 	return 0;
+	}
+	return 0;
  }

  static int write_index_ext_header(SHA_CTX *context, int fd,
@@ -1037,7 +1037,7 @@ static void ce_smudge_racily_clean_entry(struct cache_entry *ce)
  		 * size to zero here, then the object name recorded
  		 * in index is the 6-byte file but the cached stat information
  		 * becomes zero --- which would then match what we would
-		 * obtain from the filesystem next time we stat("frotz").
+		 * obtain from the filesystem next time we stat("frotz").
  		 *
  		 * However, the second update-index, before calling
  		 * this function, notices that the cached size is 6
diff --git a/setup.c b/setup.c
index a45ea83..14f62c4 100644
--- a/setup.c
+++ b/setup.c
@@ -39,7 +39,7 @@ const char *prefix_path(const char *prefix, int len, const char *path)
  	if (len) {
  		int speclen = strlen(path);
  		char *n = xmalloc(speclen + len + 1);
-	
+
  		memcpy(n, prefix, len);
  		memcpy(n + len, path, speclen+1);
  		path = n;
@@ -47,7 +47,7 @@ const char *prefix_path(const char *prefix, int len, const char *path)
  	return path;
  }

-/*
+/*
   * Unlike prefix_path, this should be used if the named file does
   * not have to interact with index entry; i.e. name of a random file
   * on the filesystem.
diff --git a/sha1_file.c b/sha1_file.c
index be991ed..d3a721b 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -193,7 +193,7 @@ char *sha1_pack_name(const unsigned char *sha1)
  		*buf++ = hex[val >> 4];
  		*buf++ = hex[val & 0xf];
  	}
-	
+
  	return base;
  }

@@ -218,7 +218,7 @@ char *sha1_pack_index_name(const unsigned char *sha1)
  		*buf++ = hex[val >> 4];
  		*buf++ = hex[val & 0xf];
  	}
-	
+
  	return base;
  }

@@ -1109,7 +1109,7 @@ static int parse_sha1_header(const char *hdr, unsigned long *sizep)
  	unsigned long size;

  	/*
-	 * The type can be at most ten bytes (including the
+	 * The type can be at most ten bytes (including the
  	 * terminating '\0' that we add), and is followed by
  	 * a space.
  	 */
@@ -1683,7 +1683,7 @@ static int find_pack_entry(const unsigned char *sha1, struct pack_entry *e, cons
  	return 0;
  }

-struct packed_git *find_sha1_pack(const unsigned char *sha1,
+struct packed_git *find_sha1_pack(const unsigned char *sha1,
  				  struct packed_git *packs)
  {
  	struct packed_git *p;
diff --git a/shallow.c b/shallow.c
index d178689..dbd9f5a 100644
--- a/shallow.c
+++ b/shallow.c
@@ -101,4 +101,3 @@ struct commit_list *get_shallow_commits(struct object_array *heads, int depth,

  	return result;
  }
-
diff --git a/ssh-upload.c b/ssh-upload.c
index 498d41e..20c35f0 100644
--- a/ssh-upload.c
+++ b/ssh-upload.c
@@ -29,24 +29,24 @@ static int serve_object(int fd_in, int fd_out) {
  	}
  	if (!size)
  		return -1;
-	
+
  	if (verbose)
  		fprintf(stderr, "Serving %s\n", sha1_to_hex(sha1));

  	remote = 0;
-	
+
  	if (!has_sha1_file(sha1)) {
  		fprintf(stderr, "git-ssh-upload: could not find %s\n",
  			sha1_to_hex(sha1));
  		remote = -1;
  	}
-	
+
  	if (write_in_full(fd_out, &remote, 1) != 1)
  		return 0;
-	
+
  	if (remote < 0)
  		return 0;
-	
+
  	return write_sha1_to_fd(fd_out, sha1);
  }

diff --git a/strbuf.c b/strbuf.c
index 7f14b0f..e33d06b 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -39,4 +39,3 @@ void read_line(struct strbuf *sb, FILE *fp, int term) {
  		sb->eof = 1;
  	strbuf_end(sb);
  }
-
diff --git a/tree-walk.c b/tree-walk.c
index cbb24eb..8d4b673 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -206,4 +206,3 @@ int get_tree_entry(const unsigned char *tree_sha1, const char *name, unsigned ch
  	free(tree);
  	return retval;
  }
-
diff --git a/upload-pack.c b/upload-pack.c
index d3a09e7..0e881c8 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -678,7 +678,7 @@ int main(int argc, char **argv)
  			break;
  		}
  	}
-	
+
  	if (i != argc-1)
  		usage(upload_pack_usage);
  	dir = argv[i];
diff --git a/var.c b/var.c
index e585e59..4127031 100644
--- a/var.c
+++ b/var.c
@@ -67,8 +67,8 @@ int main(int argc, char **argv)
  	val = read_var(argv[1]);
  	if (!val)
  		usage(var_usage);
-	
+
  	printf("%s\n", val);
-	
+
  	return 0;
  }
diff --git a/xdiff-interface.c b/xdiff-interface.c
index 10816e9..3421efd 100644
--- a/xdiff-interface.c
+++ b/xdiff-interface.c
@@ -121,5 +121,3 @@ int read_mmfile(mmfile_t *ptr, const char *filename)
  	ptr->size = sz;
  	return 0;
  }
-
-
diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c
index 9aeebc4..5cb7171 100644
--- a/xdiff/xdiffi.c
+++ b/xdiff/xdiffi.c
@@ -565,4 +565,3 @@ int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,

  	return 0;
  }
-
diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index e291dc7..78b1d4b 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -194,4 +194,3 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,

  	return 0;
  }
-
diff --git a/xdiff/xprepare.c b/xdiff/xprepare.c
index 1be7b31..e87ab57 100644
--- a/xdiff/xprepare.c
+++ b/xdiff/xprepare.c
@@ -466,4 +466,3 @@ static int xdl_optimize_ctxs(xdfile_t *xdf1, xdfile_t *xdf2) {

  	return 0;
  }
-
diff --git a/xdiff/xutils.c b/xdiff/xutils.c
index bf91c0f..2ade97b 100644
--- a/xdiff/xutils.c
+++ b/xdiff/xutils.c
@@ -380,4 +380,3 @@ int xdl_emit_hunk_hdr(long s1, long c1, long s2, long c2,

  	return 0;
  }
-
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* Re: [PATCH 3/3] Use stringbuf to clean up some string handling code.
From: Junio C Hamano @ 2007-05-20 10:04 UTC (permalink / raw)
  To: Alex Riesen; +Cc: Timo Sirainen, git
In-Reply-To: <20070520095623.GA3106@steel.home>

Alex Riesen <raa.lkml@gmail.com> writes:

> Timo Sirainen, Sun, May 20, 2007 04:25:42 +0200:
>> ---
>>  commit.c      |   30 +++++++++++++-----------------
>>  local-fetch.c |   34 ++++++++++++++++------------------
>>  2 files changed, 29 insertions(+), 35 deletions(-)
>
> I find it hard to believe that it actually was a cleanup.
>
> It is a nicer code, but... it is bigger, heavier on stack, and it does
> not actually fix anything.
>
> In my experience, such changes are seldom worth the effort. It may be
> a nice code (and I actually like str.[hc]), but its use _must_ be
> justified. I.e. it must simplify a complex formatting routine, or fix
> a bug, which otherwise would be too hard or ugly to fix. It is
> definitely not the case in this patch.

Thanks.  I was kind of waiting for somebody to say that for me
;-)

^ permalink raw reply

* Re: [PATCH] Teach 'git-apply --whitespace=strip' to remove empty lines at the end of file
From: Junio C Hamano @ 2007-05-20 10:03 UTC (permalink / raw)
  To: Marco Costalba; +Cc: Junio C Hamano, Git Mailing List
In-Reply-To: <e5bfff550705200251j3dd9b377je7ae5bafac988060@mail.gmail.com>

"Marco Costalba" <mcostalba@gmail.com> writes:

> Signed-off-by: Marco Costalba <mcostalba@gmail.com>
> ---
>
> This one seems to pass all the tests.

I think this happens to work because you are not feeding -u0
patch; if you have more than one context, then a hunk that ends
with + line is guaranteed to apply only at the end,  With a
diff prepared with -u0, that is not true anymore, is it?

We can argue that -u0 patch is crazy but we do support them.

^ permalink raw reply

* Re: [PATCH 1/3] Added generic string handling code.
From: Alex Riesen @ 2007-05-20 10:01 UTC (permalink / raw)
  To: Timo Sirainen; +Cc: git
In-Reply-To: <1179627869.32181.1284.camel@hurina>

Timo Sirainen, Sun, May 20, 2007 04:24:29 +0200:
> So here's my try on starting with something simple. Unlike almost all
> other string handling libraries, it doesn't allocate the memory
> dynamically.

Sometimes you _need_ dinamic memory allocation.

> This makes it really easy to convert existing code to use it. I'm
> including some example changes in the other patches. Besides making
> the code safer, it can also make it faster, especially those
> strcat() replacements.

It is also bigger, heavier on stack and sometimes slower because of
more function calls involved.

Aside from that, I like it. I wouldn't use it universally, but
there were times when I wished it has been be done this way.

^ permalink raw reply

* Re: [ANNOUNCE] GIT 1.5.2
From: Junio C Hamano @ 2007-05-20 10:00 UTC (permalink / raw)
  To: Thomas Glanzmann; +Cc: git
In-Reply-To: <20070520093732.GA5015@cip.informatik.uni-erlangen.de>

Gaah.  I hate these last minute brown paper bags.

If your build needs anything from compat/ (more specifically, if
you have any of those things in git-compat-util.h that we have
replacement routines for platforms that need NO_IDONTHAVETHAT,
that would not build as the build rule for test-chmtime (and
probably test-genrandom) is screwed up.

Please add $(LIBS) at the end and try again.  Sorry.

^ permalink raw reply

* Re: [PATCH 3/3] Use stringbuf to clean up some string handling code.
From: Alex Riesen @ 2007-05-20  9:56 UTC (permalink / raw)
  To: Timo Sirainen; +Cc: git
In-Reply-To: <1179627942.32181.1288.camel@hurina>

Timo Sirainen, Sun, May 20, 2007 04:25:42 +0200:
> ---
>  commit.c      |   30 +++++++++++++-----------------
>  local-fetch.c |   34 ++++++++++++++++------------------
>  2 files changed, 29 insertions(+), 35 deletions(-)

I find it hard to believe that it actually was a cleanup.

It is a nicer code, but... it is bigger, heavier on stack, and it does
not actually fix anything.

In my experience, such changes are seldom worth the effort. It may be
a nice code (and I actually like str.[hc]), but its use _must_ be
justified. I.e. it must simplify a complex formatting routine, or fix
a bug, which otherwise would be too hard or ugly to fix. It is
definitely not the case in this patch.

^ permalink raw reply

* A note from the maintainer
From: Junio C Hamano @ 2007-05-20  9:54 UTC (permalink / raw)
  To: git
In-Reply-To: <7vd52k3sib.fsf@assigned-by-dhcp.cox.net>

Now a new feature release is out, it's a good time to welcome new
people to the list.  This message talks about how git.git is managed,
and how you can work with it.

* IRC and Mailing list

Many active members of development community hang around on #git
IRC channel.  Its log is available at:

        http://colabti.de/irclogger/irclogger_log/git

The development however is primarily done on this mailing list
you are reading right now.  If you have patches, please send
them to the list, following Documentation/SubmittingPatches.

I usually try to read all patches posted to the list, and follow
almost all the discussions on the list, unless the topic is about an
obscure corner that I do not personally use.  But I am obviously not
perfect.  If you sent a patch that you did not hear from anybody for
three days, that is a very good indication that it was dropped on the
floor --- please do not hesitate to remind me.

The list archive is available at a few public sites as well:

        http://marc.theaimsgroup.com/?l=git
        http://news.gmane.org/gmane.comp.version-control.git
	http://www.spinics.net/lists/git/

and some people seem to prefer to read it over NNTP:

        nntp://news.gmane.org/gmane.comp.version-control.git

* Repositories, branches and documentation.

My public git.git repository is at:

        git://git.kernel.org/pub/scm/git/git.git/

Immediately after I publish to the primary repository at kernel.org, I
also push into an alternate here:

        git://repo.or.cz/alt-git.git/

Impatient people would have better luck with the latter one, but it
does not have "html" and "man" branches (described below).

There are three branches in git.git repository that are not
about the source tree of git: "todo", "html" and "man".  The
first one was meant to contain TODO list for me, but I am not
good at maintaining such a list so it is not as often updated as
it could/should be.  It also contains some helper scripts I use
to maintain git.

The "html" and "man" are autogenerated documentation from the
tip of the "master" branch; the tip of "html" is extracted to be
visible at kernel.org at:

        http://www.kernel.org/pub/software/scm/git/docs/

The above URL is the top-level documentation page, and it has
links to documentation of older releases.

The script to maintain these two documentation branches are
found in "todo" branch as dodoc.sh, if you are interested.  It
is a good demonstration of how to use an update hook to automate
a task.

There are four branches in git.git repository that track the
source tree of git: "master", "maint", "next", and "pu".  I may
add more maintenance branches (e.g. "maint-1.5.1") if we have
huge backward incompatible feature updates in the future to keep
an older release alive; I may not, but the distributed nature of
git means any volunteer can run a stable-tree like that himself.

The "master" branch is meant to contain what are very well
tested and ready to be used in a production setting.  There
could occasionally be minor breakages or brown paper bag bugs
but they are not expected to be anything major.  Every now and
then, a "feature release" is cut from the tip of this branch and
they typically are named with three dotted decimal digits.  The
last such release was v1.5.2 done on May 20th this year.

Whenever a feature release is made, "maint" branch is forked off
from "master" at that point.  Obvious, safe and urgent fixes
after a feature release are applied to this branch and
maintenance releases are cut from it.  The maintenance releases
are named with four dotted decimal, named after the feature
release they are updates to; the last such release was v1.5.1.6.
New features never go to this branch.  This branch is also
merged into "master" to propagate the fixes forward.

A trivial and safe enhancement goes directly on top of "master".
A new development, either initiated by myself or more often by
somebody who found his or her own itch to scratch, does not
usually happen on "master", however.  Instead, a separate topic
branch is forked from the tip of "master", and it first is
tested in isolation; I may make minimum fixups at this point.
Usually there are a handful such topic branches that are running
ahead of "master" in git.git repository.  I do not publish the
tip of these branches in my public repository, however, partly
to keep the number of branches that downstream developers need
to worry about low, and primarily because I am lazy.

I judge the quality of topic branches, taking advices from the
mailing list discussions.  Some of them start out as "good idea
but obviously is broken in some areas (e.g. breaks the existing
testsuite)" and then with some more work (either by the original
contributor or help from other people on the list) becomes "more
or less done and can now be tested by wider audience".  Luckily,
most of them start out in the latter, better shape.

The "next" branch is to merge and test topic branches in the
latter category.  In general, the branch always contains the tip
of "master".  It might not be quite rock-solid production ready,
but is expected to work more or less without major breakage.  I
usually use "next" version of git for my own work, so it cannot
be _that_ broken to prevent me from pushing the changes out.
The "next" branch is where new and exciting things take place.

The above three branches, "master", "maint" and "next" are never
rewound, so you should be able to safely track them (this
automatically means the topics that have been merged into "next"
are not rebased, and you can find the tip of topic branches you
are interested in from the output of "git log next").

The "pu" (proposed updates) branch bundles all the remainder of
topic branches.  The "pu" branch, and topic branches that are
only in "pu", are subject to rebasing in general.

When a topic that was in "pu" proves to be in testable shape, it
graduates to "next".  I do this with:

        git checkout next
        git merge that-topic-branch

Sometimes, an idea that looked promising turns out to be not so
hot and the topic can be dropped from "pu" in such a case.

A topic that is in "next" is expected to be tweaked and fixed to
perfection before it is merged to "master" (that's why "master"
can be expected to stay very stable).  Similarly to the above I
do it with this:

        git checkout master
        git merge that-topic-branch
        git branch -d that-topic-branch

However, being in "next" is not a guarantee to appear in the
next release (being in "master" is such a guarantee, unless it
is later found seriously broken and reverted), or even in any
future release.  There even were cases that topics needed
reverting a few commits in them before graduating to "master",
or a topic that already was in "next" were entirely reverted
from "next" because fatal flaws were found in them later.

Starting from v1.5.0, "master" and "maint" have release notes
for the next release in Documentation/RelNotes-* files, so that
I do not have to run around summarizing what happened just
before the release.


* Other people's trees, trusted lieutenants and credits.

Documentation/SubmittingPatches outlines who your changes should
be sent to.  As described in contrib/README, I would delegate
fixes and enhancements in contrib/ area to primary contributors
of them.

Although the following are included in git.git repository, they
have their own authoritative repository and maintainers:

 git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui
             project, which is found at:

             git://repo.or.cz/git-gui.git

 gitk     -- this file is maintained by Paul Mackerras, at:

             git://git.kernel.org/pub/scm/gitk/gitk.git

I would like to thank everybody who helped to raise git into the
current shape.  Especially I would like to thank the git list
regulars whose help I have relied on and expect to continue
relying on heavily:

 - Linus on general design issues.

 - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and
   Rene Scharfe on general implementation issues.

 - Shawn and Nicolas Pitre on pack issues.

 - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport.

 - Paul Mackerras on gitk.

 - Eric Wong on git-svn.

 - Jakub Narebski, Peter Baudis, and Luben Tuikov on gitweb.

 - J. Bruce Fields on documentaton issues.


* This document

The latest copy of this document is found in git.git repository,
on 'todo' branch, as MaintNotes.

^ permalink raw reply

* [PATCH] Teach 'git-apply --whitespace=strip' to remove empty lines at the end of file
From: Marco Costalba @ 2007-05-20  9:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---

This one seems to pass all the tests.

 builtin-apply.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/builtin-apply.c b/builtin-apply.c
index 0399743..a96f669 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -1671,6 +1671,7 @@ static int apply_one_fragment(struct buffer_desc *desc,
 	char *new = xmalloc(size);
 	const char *oldlines, *newlines;
 	int oldsize = 0, newsize = 0;
+	int trailing_added_lines = 0;
 	unsigned long leading, trailing;
 	int pos, lines;

@@ -1699,6 +1700,15 @@ static int apply_one_fragment(struct buffer_desc *desc,
 			else if (first == '+')
 				first = '-';
 		}
+		/*
+		 * Only fragments that add lines at the bottom
+		 * of a file end with a list of '+' lines
+		*/
+		if (first == '+')
+			trailing_added_lines++;
+		else
+			trailing_added_lines = 0;
+
 		switch (first) {
 		case '\n':
 			/* Newer GNU diff, empty context line */
@@ -1738,6 +1748,18 @@ static int apply_one_fragment(struct buffer_desc *desc,
 		newsize--;
 	}

+	if (new_whitespace == strip_whitespace) {
+		/* Any added empty lines is already cleaned-up here
+		 * becuase of 'strip_whitespace' flag, so just count '\n'
+		*/
+		int empty = 0;
+		while (   empty < trailing_added_lines
+		       && newsize - empty - 2 > 0
+		       && new[newsize - empty - 2] == '\n')
+			empty++;
+
+		newsize -= empty;
+	}
 	oldlines = old;
 	newlines = new;
 	leading = frag->leading;
-- 
1.5.2.rc3.90.gf33e-dirty

^ permalink raw reply related

* Re: Using git to store /etc, redux
From: David Härdeman @ 2007-05-20  9:48 UTC (permalink / raw)
  To: david; +Cc: git
In-Reply-To: <Pine.LNX.4.64.0705191611150.6938@asgard.lang.hm>

On Sat, May 19, 2007 at 04:37:54PM -0700, david@lang.hm wrote:
>On Sat, 19 May 2007, David Härdeman wrote:
>
>>I recently had the idea to store and track /etc using git. When googling 
>>the topic I came across the "Using git to store /etc" thread from the end 
>>of last year which provided some interesting details on what would be 
>>necessary.
>>
>>It seems the file metadata (owner, group, mode, xattrs, etc) was the big 
>>stumbling point, so I wrote up a tool over the last few days which allows 
>>the metadata to be stored in a separate file which can be stored along 
>>with the rest of the data in the repo (or separately).
>>
>>This is also useful for tripwire type checks and for other types of 
>>storage which drops some of the metadata (tar comes to mind)...
>>
>>The tool (metastore) is available from: git://git.hardeman.nu/metastore.git
>>
>>Not completely cleaned up yet (it lacks a real README and some Makefile 
>>targets) but I hope it might be useful to others (it sure is to me).
>>
>>Please CC me on any replies.
>
>as I understand the issue, the problem isn't creating a tool to store the 
>metadata, but in integrating things with git.

That is also important of course, the problem is that there are many 
different scenarios for how people might want to work with the metadata 
(e.g. whether changed metadata should be stored automatically or only 
with user interaction, etc).

For the "store /etc in git" solution which is what got me into this, it 
might be enough to have a pre-commit hook if all changes are made in 
/etc and committed to /etc/.git periodically (meaning there are no real 
checkouts to speak of).

>when checking something in a pre-commit hook needs to run the tool to 
>store the data.
>
>git supports this and it's pretty simple to do this.

Yes, I already have hook scripts in my local setup which does this, 
it was not clear whether pre-commit hooks could change the commit by 
adding more files to be committed but it seems to work, essentially 
the pre-commit hook is just:

metastore -s
git-add .metadata

>however when checking things out there are approaches
>
>1. modify git to have a post-checkout hook to set the metadata to match
>    what was stored at checkin and accept the fact that this leaves a
>    window where the file has the wrong metadata on it (between when the
>    file is written and when the hook runs), or use a staging area to have
>    copies of the files during check-in and check-out

Right, I use a non-hook script for this right now which changes umask to 
0077, pulls the changes, shows the difference in metadata and asks for 
confirmation and then applies the metadata (which undoes the effects of 
the umask setting).

I think I'll add both scripts to my git repo as examples soon.

-- 
David Härdeman

^ permalink raw reply

* Re: [ANNOUNCE] GIT 1.5.1.6
From: Thomas Glanzmann @ 2007-05-20  9:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vtzu7q2ug.fsf@assigned-by-dhcp.cox.net>

Hello,

> The latest maintenance release GIT 1.5.1.6 is available

just to give some postive feedback, too. This one builds for me
perfectly on Solaris 10 and Forte 12 with exactly the same make call.

        Thomas

^ permalink raw reply

* Re: git.or.cz IPv6
From: Thomas Glanzmann @ 2007-05-20  9:41 UTC (permalink / raw)
  To: Petr Baudis; +Cc: GIT
In-Reply-To: <20070514005410.GG4489@pasky.or.cz>

Hello Peter,

> I'd prefer to have AAAA records for IPv6-capable sites but if it
> causes problems for more people, I will remove it - new technology
> stuff is nice but the priority #1 is for the site to be reachable.

btw. I still have trouble to access the site via IPv6.

        Thomas

^ permalink raw reply

* Re: [ANNOUNCE] GIT 1.5.2
From: Thomas Glanzmann @ 2007-05-20  9:37 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vsl9rq2u2.fsf@assigned-by-dhcp.cox.net>

Hello,

> The latest feature release GIT 1.5.2 is available

It does not compile for me on Solaris 10 with forte 12 with the
following error. Any ideas?

export PATH="/opt/forte12/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/openwin/bin"

cd git-1.5.2
/opt/csw/bin/gmake \
        CFLAGS='-O' \
        CC=/opt/forte12/SUNWspro/bin/cc \
        DESTDIR=/var/tmp/sithglan-pkg/git-1.5.2-buildroot \
        ETC_GITCONFIG=/etc/gitconfig \
        INSTALL=/opt/csw/bin/ginstall \
        NO_CURL=1 \
        NO_EXPAT=1 \
        NO_ICONV=1 \
        NO_OPENSSL=1 \
        NO_TCLTK=1 \
        TAR=/opt/csw/bin/gtar \
        mandir=/usr/share/man \
        prefix=/usr \
        install
...
gmake[2]: Leaving directory `/var/tmp/sithglan-pkg/git-1.5.2/templates'
/opt/forte12/SUNWspro/bin/cc -O  -D__EXTENSIONS__ -DNO_OPENSSL -DNO_ICONV -DSHA1_HEADER='"mozilla-sha1/sha1.h"' -DETC_GITCONFIG='"/etc/gitconfig"' -DNO_STRCASESTR -o test-chmtime   test-chmtime.c
Undefined                       first referenced
symbol                             in file
die                                 test-chmtime.o
release_pack_memory                 test-chmtime.o
sane_ctype                          test-chmtime.o
ld: fatal: Symbol referencing errors. No output written to test-chmtime
gmake[1]: *** [test-chmtime] Error 1
gmake[1]: Leaving directory `/var/tmp/sithglan-pkg/git-1.5.2'


        Thomas

^ permalink raw reply

* [ANNOUNCE] GIT 1.5.2
From: Junio C Hamano @ 2007-05-20  9:08 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest feature release GIT 1.5.2 is available at the usual
places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.5.2.tar.{gz,bz2}			(tarball)
  git-htmldocs-1.5.2.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.5.2.tar.{gz,bz2}		(preformatted docs)
  RPMS/$arch/git-*-1.5.2-1.$arch.rpm	(RPM)

GIT v1.5.2 Release Notes
========================

Updates since v1.5.1
--------------------

* Plumbing level superproject support.

  You can include a subdirectory that has an independent git
  repository in your index and tree objects of your project
  ("superproject").  This plumbing (i.e. "core") level
  superproject support explicitly excludes recursive behaviour.

  The "subproject" entries in the index and trees of a superproject
  are incompatible with older versions of git.  Experimenting with
  the plumbing level support is encouraged, but be warned that
  unless everybody in your project updates to this release or
  later, using this feature would make your project
  inaccessible by people with older versions of git.

* Plumbing level gitattributes support.

  The gitattributes mechanism allows you to add 'attributes' to
  paths in your project, and affect the way certain git
  operations work.  Currently you can influence if a path is
  considered a binary or text (the former would be treated by
  'git diff' not to produce textual output; the latter can go
  through the line endings conversion process in repositories
  with core.autocrlf set), expand and unexpand '$Id$' keyword
  with blob object name, specify a custom 3-way merge driver,
  and specify a custom diff driver.  You can also apply
  arbitrary filter to contents on check-in/check-out codepath
  but this feature is an extremely sharp-edged razor and needs
  to be handled with caution (do not use it unless you
  understand the earlier mailing list discussion on keyword
  expansion).  These conversions apply when checking files in
  or out, and exporting via git-archive.

* The packfile format now optionally suports 64-bit index.

  This release supports the "version 2" format of the .idx
  file.  This is automatically enabled when a huge packfile
  needs more than 32-bit to express offsets of objects in the
  pack.

* Comes with an updated git-gui 0.7.1

* Updated gitweb:

  - can show combined diff for merges;
  - uses font size of user's preference, not hardcoded in pixels;
  - can now 'grep';

* New commands and options.

  - "git bisect start" can optionally take a single bad commit and
    zero or more good commits on the command line.

  - "git shortlog" can optionally be told to wrap its output.

  - "subtree" merge strategy allows another project to be merged in as
    your subdirectory.

  - "git format-patch" learned a new --subject-prefix=<string>
    option, to override the built-in "[PATCH]".

  - "git add -u" is a quick way to do the first stage of "git
    commit -a" (i.e. update the index to match the working
    tree); it obviously does not make a commit.

  - "git clean" honors a new configuration, "clean.requireforce".  When
    set to true, this makes "git clean" a no-op, preventing you
    from losing files by typing "git clean" when you meant to
    say "make clean".  You can still say "git clean -f" to
    override this.

  - "git log" family of commands learned --date={local,relative,default}
    option.  --date=relative is synonym to the --relative-date.
    --date=local gives the timestamp in local timezone.

* Updated behavior of existing commands.

  - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
    but $EMAIL is set, the latter is used as a substitute.

  - "git diff --stat" shows size of preimage and postimage blobs
    for binary contents.  Earlier it only said "Bin".

  - "git lost-found" shows stuff that are unreachable except
    from reflogs.

  - "git checkout branch^0" now detaches HEAD at the tip commit
    on the named branch, instead of just switching to the
    branch (use "git checkout branch" to switch to the branch,
    as before).

  - "git bisect next" can be used after giving only a bad commit
    without giving a good one (this starts bisection half-way to
    the root commit).  We used to refuse to operate without a
    good and a bad commit.

  - "git push", when pushing into more than one repository, does
    not stop at the first error.

  - "git archive" does not insist you to give --format parameter
    anymore; it defaults to "tar".

  - "git cvsserver" can use backends other than sqlite.

  - "gitview" (in contrib/ section) learned to better support
    "git-annotate".

  - "git diff $commit1:$path2 $commit2:$path2" can now report
    mode changes between the two blobs.

  - Local "git fetch" from a repository whose object store is
    one of the alternates (e.g. fetching from the origin in a
    repository created with "git clone -l -s") avoids
    downloading objects unnecessarily.

  - "git blame" uses .mailmap to canonicalize the author name
    just like "git shortlog" does.

  - "git pack-objects" pays attention to pack.depth
    configuration variable.

  - "git cherry-pick" and "git revert" does not use .msg file in
    the working tree to prepare commit message; instead it uses
    $GIT_DIR/MERGE_MSG as other commands do.

* Builds

  - git-p4import has never been installed; now there is an
    installation option to do so.

  - gitk and git-gui can be configured out.

  - Generated documentation pages automatically get version
    information from GIT_VERSION.

  - Parallel build with "make -j" descending into subdirectory
    was fixed.

* Performance Tweaks

  - Optimized "git-rev-list --bisect" (hence "git-bisect").

  - Optimized "git-add $path" in a large directory, most of
    whose contents are ignored.

  - Optimized "git-diff-tree" for reduced memory footprint.

  - The recursive merge strategy updated a worktree file that
    was changed identically in two branches, when one of them
    renamed it.  We do not do that when there is no rename, so
    match that behaviour.  This avoids excessive rebuilds.

  - The default pack depth has been increased to 50, as the
    recent addition of delta_base_cache makes deeper delta chains
    much less expensive to access.  Depending on the project, it was
    reported that this reduces the resulting pack file by 10%
    or so.


Fixes since v1.5.1
------------------

All of the fixes in v1.5.1 maintenance series are included in
this release, unless otherwise noted.

* Bugfixes

  - Switching branches with "git checkout" refused to work when
    a path changes from a file to a directory between the
    current branch and the new branch, in order not to lose
    possible local changes in the directory that is being turned
    into a file with the switch.  We now allow such a branch
    switch after making sure that there is no locally modified
    file nor un-ignored file in the directory.  This has not
    been backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - Merging branches that have a file in one and a directory in
    another at the same path used to get quite confused.  We
    handle such a case a bit more carefully, even though that is
    still left as a conflict for the user to sort out.  This
    will not be backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - git-fetch had trouble with a remote with insanely large number
    of refs.

  - "git clean -d -X" now does not remove non-excluded directories.

  - rebasing (without -m) a series that changes a symlink to a directory
    in the middle of a path confused git-apply greatly and refused to
    operate.

----------------------------------------------------------------

Changes since v1.5.1 are as follows:

Adam Roben (5):
      Remove usernames from all commit messages, not just when using svmprops
      git-svn: Don't rely on $_ after making a function call
      git-svn: Ignore usernames in URLs in find_by_url
      git-svn: Added 'find-rev' command
      git-svn: Add 'find-rev' command

Alex Riesen (22):
      Fix passing of TCLTK_PATH to git-gui
      Use rev-list --reverse in git-rebase.sh
      Document -g (--walk-reflogs) option of git-log
      Fix t4201: accidental arithmetic expansion
      Fix permissions on test scripts
      Fix overwriting of files when applying contextually independent diffs
      Tests for core subproject support
      Simplify calling of CR/LF conversion routines
      Fix a typo in crlf conversion code
      Fix crash in t0020 (crlf conversion)
      Fix handle leak in write_tree
      Avoid excessive rewrites in merge-recursive
      Add a test for merging changed and rename-changed branches
      Ignore merged status of the file-level merge
      Use strlcpy instead of strncpy in mailmap.c
      Fix read_mailmap to handle a caller uninterested in repo abbreviation
      Remove pointless calls to access(2) when checking for .mailmap
      Include mailmap.h in mailmap.c to catch mailmap interface changes
      Small correction in reading of commit headers
      Handle return code of parse_commit in revision machinery
      Use GIT_OBJECT_DIR for temporary files of pack-objects
      Allow fetching references from any namespace

Alexandre Julliard (2):
      git.el: Add a commit description to the reflog.
      http-fetch: Disable use of curl multi support for libcurl < 7.16.

Amos Waterland (1):
      wcwidth redeclaration

Andrew Ruder (17):
      Add policy on user-interface changes
      Update git-am documentation
      Update git-applymbox documentation
      Update git-apply documentation
      Update git-annotate/git-blame documentation
      Update git-archive documentation
      Update git-cherry-pick documentation
      Fix unmatched emphasis tag in git-tutorial
      Update git-config documentation
      Removing -n option from git-diff-files documentation
      Document additional options for git-fetch
      Update git-fmt-merge documentation
      Update git-grep documentation
      Update -L documentation for git-blame/git-annotate
      Update git-http-push documentation
      Update git-local-fetch documentation
      Update git-http-fetch documentation

Andy Parkins (6):
      Show binary file size change in diff --stat
      post-receive-email example hook: fastforward should have been fast_forward
      post-receive-email example hook: detect rewind-only updates and output sensible message
      post-receive-email example hook: sed command for getting description was wrong
      Use $Id$ as the ident attribute keyword rather than $ident$ to be consistent with other VCSs
      Fix crlf attribute handling to match documentation

Andy Whitcroft (2):
      fix up strtoul_ui error handling
      git name-rev writes beyond the end of malloc() with large generations

Aneesh Kumar K.V (1):
      gitview: annotation support

Arjen Laarhoven (5):
      usermanual.txt: some capitalization nits
      t3200-branch.sh: small language nit
      t5300-pack-object.sh: portability issue using /usr/bin/stat
      Makefile: iconv() on Darwin has the old interface
      Document 'opendiff' value in config.txt and git-mergetool.txt

Brian Gernhardt (7):
      Remove unused WITH_OWN_SUBPROCESS_PY from RPM spec
      Fix t4200-rerere for white-space from "wc -l"
      Document --left-right option to rev-list.
      Distinguish branches by more than case in tests.
      Remove case-sensitive file in t3030-merge-recursive.
      Reverse the order of -b and --track in the man page.
      Ignore all man sections as they are generated files.

Bryan Larsen (2):
      Allow PERL_PATH="/usr/bin/env perl"
      posix compatibility for t4200

Carl Worth (1):
      Mention version 1.5.1 in tutorial and user-manual

Carlos Rica (1):
      Use const qualifier for 'sha1' parameter in delete_ref function

Christian Couder (4):
      Bisect: teach "bisect start" to optionally use one bad and many good revs.
      Documentation: bisect: "start" accepts one bad and many good commits
      Bisect: simplify "bisect start" logging.
      Bisect: rename "t/t6030-bisect-run.sh" to "t/t6030-bisect-porcelain.sh".

Dana L. How (2):
      Fix lseek(2) calls with args 2 and 3 swapped
      Create pack-write.c for common pack writing code

Daniel Barkalow (1):
      Make xstrndup common

Eric Wong (14):
      git-svn: bail out on incorrect command-line options
      git-svn: bail out on incorrect command-line options
      git-svn: dcommit/rebase confused by patches with git-svn-id: lines
      git-svn: fix log command to avoid infinite loop on long commit messages
      git-svn: respect lower bound of -r/--revision when following parent
      git-svn: quiet some warnings when run only with --version/--help
      git-svn: don't allow globs to match regular files
      perl: install private Error.pm if the site version is older than our own
      git-svn: don't drop the username from URLs when dcommit is run
      git-svn: clean up caching of SVN::Ra functions
      git-svn: fix segfaults due to initial SVN pool being cleared
      git-svn: don't attempt to minimize URLs by default
      git-svn: avoid crashing svnserve when creating new directories
      git-svn: don't minimize-url when doing an init that tracks multiple paths

Eygene Ryabinkin (13):
      Teach gitk to use the user-defined UI font everywhere.
      Improve look-and-feel of the gitk tool.
      Add the WITH_P4IMPORT knob to the Makefile.
      Added git-p4 package to the list of git RPMs.
      Added correct Python path to the RPM specfile.
      NO_TCLTK
      Add --with-tcltk and --without-tcltk to configure.
      Rewrite Tcl/Tk interpreter path for the GUI tools.
      Eliminate checks of user-specified Tcl/Tk interpreter.
      Allow wish interpreter to be defined with TCLTK_PATH
      Teach git-gui to use the user-defined UI font everywhere.
      Improve look-and-feel of the git-gui tool.
      Do not break git-gui messages into multiple lines.

Fernando J. Pereda (1):
      Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Frank Lichtenheld (35):
      cvsserver: Introduce new state variable 'method'
      cvsserver: Handle three part keys in git config correctly
      cvsserver: Allow to override the configuration per access method
      cvsserver: Make the database backend configurable
      cvsserver: Abort if connect to database fails
      Documentation: Replace @@GIT_VERSION@@ in documentation
      Documentation: Add version information to man pages
      cvsserver: Use DBI->table_info instead of DBI->tables
      cvsimport: sync usage lines with existing options
      cvsimport: Improve documentation of CVSROOT and CVS module determination
      cvsimport: Improve usage error reporting
      cvsimport: Reorder options in documentation for better understanding
      cvsimport: Improve formating consistency
      cvsserver: small corrections to asciidoc documentation
      cvsserver: Corrections to the database backend configuration
      cvsserver: Add asciidoc documentation for new database backend configuration
      gitweb: Allow forks with project list file
      gitweb: Allow configuring the default projects order and add order 'none'
      cvsserver: Fix handling of diappeared files on update
      cvsserver: Allow to "add" a removed file
      cvsserver: Reword documentation on necessity of write access
      cvsserver: Document the GIT branches -> CVS modules mapping more prominently
      config.txt: Document gitcvs.allbinary
      config.txt: Document core.autocrlf
      config.txt: Change pserver to server in description of gitcvs.*
      config.txt: Fix grammatical error in description of http.noEPSV
      config.txt: Add gitcvs.db* variables
      git-shortlog: Fix two formatting errors in asciidoc documentation
      cvsserver: Handle re-added files correctly
      cvsserver: Add test cases for git-cvsserver
      cvsserver: Limit config parser to needed options
      cvsserver: Don't send mixed messages to clients
      builtin-log.c: Fix typo in comment
      Documentation: format-patch has no --mbox option
      git-am: Clean up the asciidoc documentation

Geert Bosch (1):
      Fix renaming branch without config file

Gerrit Pape (5):
      rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.
      variable $projectdesc needs to be set before checking against unchanged default.
      Have sample update hook not refuse deleting a branch through push.
      Documentation/git-reset.txt: suggest git commit --amend in example.
      gitweb: choose appropriate view for file type if a= parameter missing

Ismail Dönmez (1):
      gitweb: use decode_utf8 directly

J. Bruce Fields (28):
      Documentation: minor edits of git-lost-found manpage
      Documentation: clarify git-checkout -f, minor editing
      Documentation: clarify track/no-track option.
      user-manual: fix discussion of default clone
      user-manual: detached HEAD
      user-manual: start revising "internals" chapter
      user-manual: use detached head when rewriting history
      user-manual: more discussion of detached heads, fix typos
      user-manual: add section ID's
      user-manual: clean up fast-forward and dangling-objects sections
      user-manual: fix .gitconfig editing examples
      user-manual: miscellaneous editing
      user-manual: stop deprecating the manual
      user-manual: fix clone and fetch typos
      user-manual: revise birdseye-view chapter
      glossary: expand and clarify some definitions, prune cross-references
      user-manual: move quick-start to an appendix
      Documentation: remove howto's now incorporated into manual
      user-manual: move howto/make-dist.txt into user manual
      user-manual: move howto/using-topic-branches into manual
      user-manual: add a "counting commits" example
      user-manual: introduce git
      user-manual: listing commits reachable from some refs not others
      user-manual: reorganize public git repo discussion
      tutorials: add user-manual links
      tutorial: revise index introduction
      user-manual: discourage shared repository
      user-manual: finding commits referencing given file content

Jakub Narebski (20):
      gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)
      gitweb: Quote hash keys, and do not use barewords keys
      gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
      diff format documentation: describe raw combined diff format
      gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
      gitweb: Add combined diff support to git_difftree_body
      gitweb: Add combined diff support to git_patchset_body
      gitweb: Make it possible to use pre-parsed info in git_difftree_body
      gitweb: Show combined diff for merge commits in 'commitdiff' view
      gitweb: Show combined diff for merge commits in 'commit' view
      gitweb: Test if $from_id and $to_id are defined before comparison
      gitweb: Check if requested object exists
      gitweb: Fix "Use of unitialized value" warnings in empty repository
      Documentation: Split description of pretty formats of commit log
      gitweb: Add a few comments about %feature hash
      gitweb: Do not use absolute font sizes
      gitweb: Separate search regexp from search text
      gitweb: Empty patch for merge means trivial merge, not no differences
      gitweb: Fix error in git_patchset_body for deletion in merge commit
      gitweb: Fix "Use of uninitialized value" warning in git_feed

James Bowes (2):
      Document git-check-attr
      Documentation: fix typo in git-remote.txt

Jan Hudec (2):
      Updated documentation of hooks in git-receive-pack.
      Minor fixup to documentation of hooks in git-receive-pack.

Jari Aalto (4):
      Clarify SubmittingPatches Checklist
      git.7: Mention preformatted html doc location
      send-email documentation: clarify --smtp-server
      SPECIFYING RANGES typo fix: it it => it is

Jeff King (4):
      Documentation: don't reference non-existent 'git-cvsapplycommit'
      git-add: allow path limiting with -u
      Documentation/git-add: clarify -u with path limiting
      format-patch: add MIME-Version header when we add content-type.

Jim Meyering (3):
      (encode_85, decode_85): Mark source buffer pointer as "const".
      sscanf/strtoul: parse integers robustly
      sscanf/strtoul: parse integers robustly

Johan Herland (3):
      Fix signedness on return value from xread()
      Ensure return value from xread() is always stored into an ssize_t
      user-manual: Add section on ignoring files

Johannes Schindelin (7):
      Use print_wrapped_text() in shortlog
      dir.c(common_prefix): Fix two bugs
      t4201: Do not display weird characters on the terminal
      import-tars: be nice to wrong directory modes
      Teach import-tars about GNU tar's @LongLink extension.
      import-tars: Use the "Link indicator" to identify directories
      Add a birdview-on-the-source-code section to the user manual

Johannes Sixt (1):
      git-gui: Call changes "Staged" and "Unstaged" in file list titles.

Jonas Fonseca (1):
      git-tag(1): -v option is a subcommand; fix code block

Josh Triplett (5):
      Add clean.requireForce option, and add -f option to git-clean to override it
      Fix typo in git-am: s/Was is/Was it/
      Create a sysconfdir variable, and use it for ETC_GITCONFIG
      Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation
      Fall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL

Julian Phillips (3):
      Documentation: show-ref: document --exclude-existing
      refs.c: add a function to sort a ref list, rather then sorting on add
      http.c: Fix problem with repeated calls of http_init

Junio C Hamano (151):
      git-fetch: add --quiet
      t6002: minor spelling fix.
      git-rev-list: add --bisect-vars option.
      git-rev-list --bisect: optimization
      t6004: add a bit more path optimization test.
      rev-list --bisect: Fix "halfway" optimization.
      make the previous optimization work also on path-limited rev-list --bisect
      Documentation: unbreak user-manual.
      Optional Tck/Tk: ignore generated files.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.
      git-read-tree --index-output=<file>
      add_cache_entry(): removal of file foo does not conflict with foo/bar
      unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
      unpack-trees: get rid of *indpos parameter.
      Fix read-tree --prefix=dir/.
      Fix twoway_merge that passed d/f conflict marker to merged_entry().
      Fix switching to a branch with D/F when current branch has file D.
      rerere: make sorting really stable.
      RPM spec: include git-p4 in the list of all packages.
      Fix dependency of common-cmds.h
      Fix bogus error message from merge-recursive error path
      Propagate cache error internal to refresh_cache() via parameter.
      Rename internal function "add_file_to_cache" in builtin-update-index.c
      Rename static variable write_index to update_index in builtin-apply.c
      Rename add_file_to_index() to add_file_to_cache()
      git-bisect: modernization
      t6030: add a bit more tests to git-bisect
      git-bisect: allow bisecting with only one bad commit.
      Documentation: tighten dependency for git.{html,txt}
      git-push reports the URL after failing.
      git-push to multiple locations does not stop at the first failure
      A new merge stragety 'subtree'.
      Prepare for 1.5.1.1
      Start 1.5.2 cycle by prepareing RelNotes for it.
      Add Documentation/cmd-list.made to .gitignore
      shortlog -w: make wrap-line behaviour optional.
      t1000: fix case table.
      Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()
      merge-recursive: do not barf on "to be removed" entries.
      merge-recursive: handle D/F conflict case more carefully.
      t3030: merge-recursive backend test.
      git-fetch--tool pick-rref
      git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
      fsck: do not complain on detached HEAD.
      GIT 1.5.1.1
      Add %m to '--pretty=format:'
      Refactor patch-id filtering out of git-cherry and git-format-patch.
      git-log --cherry-pick A...B
      Documentation: --cherry-pick
      Fix git {log,show,...} --pretty=email
      Do not default to --no-index when given two directories.
      Add basic infrastructure to assign attributes to paths
      Define 'crlf' attribute.
      Teach 'diff' about 'diff' attribute.
      Fix 'crlf' attribute semantics.
      Fix 'diff' attribute semantics.
      Makefile: add patch-ids.h back in.
      attribute macro support
      Define a built-in attribute macro "binary".
      Change attribute negation marker from '!' to '-'.
      send-email: do not leave an empty CC: line if no cc is present.
      Make sure quickfetch is not fooled with a previous, incomplete fetch.
      Allow more than true/false to attributes.
      merge-recursive: separate out xdl_merge() interface.
      git-gui: Honor TCLTK_PATH if supplied
      Allow specifying specialized merge-backend per path.
      Add a demonstration/test of customized merge.
      Start preparing for 1.5.1.2
      Update draft release notes for 1.5.2 with accumulated changes.
      Custom low-level merge driver support.
      Allow the default low-level merge driver to be configured.
      Custom low-level merge driver: change the configuration scheme.
      Allow low-level driver to specify different behaviour during internal merge.
      Fix funny types used in attribute value representation
      Counto-fix in merge-recursive
      Simplify code to find recursive merge driver.
      Documentation: support manual section (5) - file formats.
      Update 'crlf' attribute semantics.
      Document gitattributes(5)
      git-add -u: match the index with working tree.
      git-clone: fix dumb protocol transport to clone from pack-pruned ref
      Fix bogus linked-list management for user defined merge drivers.
      convert.c: restructure the attribute checking part.
      lockfile: record the primary process.
      GIT 1.5.1.2
      Update documentation links to point at v1.5.1.2
      Documentation/Makefile: fix section (5) installation
      Update draft release notes for v1.5.2
      pack-objects: quickfix for permission modes.
      Fix 'quickfix' on pack-objects.
      Update tests not to assume that generated packfiles are writable.
      pack-objects: make generated packfile read-only
      Support 'diff=pgm' attribute
      Move index-related variables into a structure.
      Make read-cache.c "the_index" free.
      Document "diff=driver" attribute
      t5302: avoid using tail -c
      t6030: grab commit object name as we go
      Build RPM with ETC_GITCONFIG=/etc/gitconfig
      Diff between two blobs should take mode changes into account now.
      t/test-lib.sh: Protect ourselves from common misconfiguration
      gitattributes documentation: clarify overriding
      applymbox & quiltimport: typofix.
      Add 'ident' conversion.
      Add 'filter' attribute and external filter driver definition.
      Add --date={local,relative,default}
      Start preparing for 1.5.1.3
      Do not barf on too long action description
      Update .mailmap with "Michael"
      Fix import-tars fix.
      blame -s: suppress author name and time.
      Split out mailmap handling out of shortlog
      Apply mailmap in git-blame output.
      Make macros to prevent double-inclusion in headers consistent.
      Make sure test-genrandom and test-chmtime are builtas part of the main build.
      Fix symlink handling in git-svn, related to PerlIO
      GIT v1.5.1.3
      GIT v1.5.2-rc1
      blame: use .mailmap unconditionally
      diff.c: fix "size cache" handling.
      blame: Notice a wholesale incorporation of an existing file.
      blame: -C -C -C
      Add test for blame corner cases.
      GIT v1.5.2-rc2
      diff: release blobs after generating textual diff.
      diff.c: do not use a separate "size cache".
      diff -M: release the preimage candidate blobs after rename detection.
      diff -S: release the image after looking for needle in it
      GIT v1.5.1.4
      Update documentation links to point at 1.5.1.4
      t9400: skip cvsserver test if Perl SQLite interface is unavailable
      git-clone: don't get fooled by $PWD
      .mailmap: add some aliases
      GIT v1.5.2-rc3
      Minor copyediting on Release Notes for 1.5.2
      Add has_symlink_leading_path() function.
      apply: do not get confused by symlinks in the middle
      read-tree -m -u: avoid getting confused by intermediate symlinks.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
      Link to HTML version of external doc if available
      Fix git-clone buglet for remote case.
      Prepare for 1.5.1.5 Release Notes
      gitweb: fix another use of undefined value
      GIT v1.5.1.5
      Add link to 1.5.1.5 release notes.
      Documentation/git.txt: Update links to older documentation pages.
      GIT 1.5.1.6
      git-cvsserver: exit with 1 upon "I HATE YOU"
      GIT 1.5.2

Junio Hamano (1):
      t9400: Use the repository config and nothing else.

Karl Hasselström (2):
      Fix markup in git-svn man page
      Add --no-rebase option to git-svn dcommit

Lars Hjemli (3):
      rename_ref(): only print a warning when config-file update fails
      Make builtin-branch.c handle the git config file
      git-archive: don't die when repository uses subprojects

Linus Torvalds (26):
      Optimize directory listing with pathspec limiter.
      diff-lib: use ce_mode_from_stat() rather than messing with modes manually
      Avoid overflowing name buffer in deep directory structures
      Add 'resolve_gitlink_ref()' helper function
      Add "S_IFDIRLNK" file mode infrastructure for git links
      Teach "fsck" not to follow subproject links
      Teach core object handling functions about gitlinks
      Fix thinko in subproject entry sorting
      Teach directory traversal about subprojects
      Teach git-update-index about gitlinks
      Don't show gitlink directories when we want "other" files
      Teach git list-objects logic not to follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      Fix gitlink index entry filesystem matching
      Teach git list-objects logic to not follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      git-quiltimport complaining yet still working
      Fix some "git ls-files -o" fallout from gitlinks
      Expose subprojects as special files to "git diff" machinery
      Add a generic "object decorator" interface, and make object refs use it
      Add support for "commit name decorations" to log family of commands
      Use proper object allocators for unknown object nodes too
      Clean up object creation to use more common code
      Fix working directory errno handling when unlinking a directory
      Fix a copy-n-paste bug in the object decorator code.
      Fix --boundary output

Luiz Fernando N. Capitulino (7):
      ident.c: Use const qualifier for 'struct passwd' parameters
      ident.c: Use size_t (instead of int) to store sizes
      remove_subtree(): Use strerror() when possible
      entry.c: Use const qualifier for 'struct checkout' parameters
      read_cache_from(): small simplification
      core-tutorial: minor fixes
      init_buffer(): Kill buf pointer

Marco Costalba (1):
      Fix an unmatched comment end in arm/sha1_arm.S

Martin Koegler (7):
      gitweb: Show "no difference" message for empty diff
      Add S_IFINVALID mode
      add get_sha1_with_mode
      add add_object_array_with_mode
      store mode in rev_list, if <tree>:<filename> syntax is used
      use mode of the tree in git-diff, if <tree>:<file> syntax is used
      Fix compilation of test-delta

Matthias Kestenholz (2):
      Documentation: Added [verse] to SYNOPSIS where necessary
      Documentation: Reformatted SYNOPSIS for several commands

Matthias Lederhofer (1):
      handle_options in git wrapper miscounts the options it handled.

Matthieu Castet (1):
      Remove stale non-static-inline prototype for tree_entry_extract()

Matthieu Moy (2):
      Document git add -u introduced earlier.
      Added a reference to git-add in the documentation for git-update-index

Michael Hendricks (3):
      Document 'git-log --decorate'
      git-send-email: allow leading white space on mutt aliases
      Document core.excludesfile for git-add

Michael S. Tsirkin (1):
      Display the subject of the commit just made.

Michael Spang (4):
      git-blame: Fix overrun in fake_working_tree_commit()
      dir.c: Omit non-excluded directories with dir->show_ignored
      t7300: Basic tests for git-clean
      Fix minor documentation errors

Michele Ballabio (1):
      git shortlog documentation: add long options and fix a typo

Nicolas Pitre (33):
      clean up and optimize nth_packed_object_sha1() usage
      get rid of num_packed_objects()
      make overflow test on delta base offset work regardless of variable size
      add overflow tests on pack offset variables
      compute a CRC32 for each object as stored in a pack
      compute object CRC32 with index-pack
      pack-objects: learn about pack index version 2
      index-pack: learn about pack index version 2
      sha1_file.c: learn about index version 2
      show-index.c: learn about index v2
      pack-redundant.c: learn about index v2
      allow forcing index v2 and 64-bit offset treshold
      validate reused pack data with CRC when possible
      simple random data generator for tests
      use test-genrandom in tests instead of /dev/urandom
      tests for various pack index features
      clean up add_object_entry()
      pack-objects: optimize preferred base handling a bit
      pack-objects: equal objects in size should delta against newer objects
      pack-objects: rework check_delta_limit usage
      pack-objects: clean up list sorting
      pack-objects: get rid of reuse_cached_pack
      pack-objects: get rid of create_final_object_list()
      pack-objects: make in_pack_header_size a variable of its own
      add get_size_from_delta()
      pack-objects: better check_object() performances
      pack-objects: remove obsolete comments
      document --index-version for index-pack and pack-objects
      common progress display support
      make progress "title" part of the common progress interface
      provide a facility for "delayed" progress reporting
      delay progress display when checking out files
      add file checkout progress

OGAWA Hirofumi (1):
      git-fetch: Fix "argument list too long"

Paul Mackerras (1):
      gitk: Allow user to choose whether to see the diff, old file, or new file

Petr Baudis (7):
      Git.pm: config_boolean() -> config_bool()
      gitweb: Do not use absolute font sizes
      gitweb: Normalize searchbar font size
      gitweb: Add support for grep searches
      gitweb: Allow arbitrary strings to be dug with pickaxe
      Documentation: git-rev-list's "patterns"
      gitweb: Remove redundant $searchtype setup

Quy Tonthat (4):
      Add howto files to rpm packages.
      Added new git-gui library files to rpm spec
      RPM spec: include files in technical/ to package.
      Documentation/branch: fix small typo in -D example

René Scharfe (3):
      Revert "builtin-archive: use RUN_SETUP"
      git-archive: make tar the default format
      git-archive: convert archive entries like checkouts do

Richard P. Curnow (2):
      Fix documentation of tag in git-fast-import.txt
      Fix documentation of tag in git-fast-import.txt

Robin H. Johnson (12):
      Add custom subject prefix support to format-patch (take 3)
      Add testcase for format-patch --subject-prefix (take 3)
      Document --dry-run parameter to send-email.
      Prefix Dry- to the message status to denote dry-runs.
      Debugging cleanup improvements
      Change the scope of the $cc variable as it is not needed outside of send_message.
      Perform correct quoting of recipient names.
      Validate @recipients before using it for sendmail and Net::SMTP.
      Ensure clean addresses are always used with Net::SMTP
      Allow users to optionally specify their envelope sender.
      Document --dry-run and envelope-sender for git-send-email.
      Sanitize @to recipients.

Sam Vilain (1):
      git-tar-tree: complete deprecation conversion message

Sami Farin (1):
      fast-import: size_t vs ssize_t

Shawn O. Pearce (50):
      Always bind the return key to the default button
      git-gui: Brown paper bag fix division by 0 in blame
      Fix lost-found to show commits only referenced by reflogs
      Honor -p<n> when applying git diffs
      Don't yap about merge-subtree during make
      git-gui: Display the directory basename in the title
      Revert "Allow wish interpreter to be defined with TCLTK_PATH"
      Contribute a fairly paranoid update hook
      Kill the useless progress meter in merge-recursive
      Don't repack existing objects in fast-import
      Cleanup variables in cat-file
      git-gui: Correctly handle UTF-8 encoded commit messages
      Actually handle some-low memory conditions
      Don't allow empty pathnames in fast-import
      Catch empty pathnames in trees during fsck
      git-gui: Allow spaces in path to 'wish'
      git-gui: Include the subject in the status bar after commit
      git-gui: Warn users before making an octopus merge
      git-gui: Correct line wrapping for too many branch message
      git-gui: Cleanup common font handling for font_ui
      git-gui: Use option database defaults to set the font
      git-gui: Refactor to use our git proc more often
      git-gui: Track our own embedded values and rebuild when they change
      Reuse fixup_pack_header_footer in index-pack
      Don't use seq in tests, not everyone has it
      Improve request-pull to handle non-rebased branches
      Properly handle '0' filenames in import-tars
      git-gui: Refactor into multiple files to save my sanity
      git-gui: Move console procs into their own namespace
      git-gui: Allow vi keys to scroll the diff/blame regions
      git-gui: Move merge support into a namespace
      git-gui: Show all possible branches for merge
      git-gui: Include commit id/subject in merge choices
      git-gui: Use vi-like keys in merge dialog
      Remove duplicate exports from Makefile
      git-gui: Allow shift-{k,j} to select a range of branches to merge
      git-gui: Define a simple class/method system
      git-gui: Convert browser, console to "class" format
      git-gui: Don't attempt to inline array reads in methods
      git-gui: Convert blame to the "class" way of doing things
      git-gui: Use prefix if blame is run in a subdirectory
      git-gui: Smarter command line parsing for browser, blame
      git-gui: Generate blame on uncommitted working tree file
      git-gui: Cleanup minor nits in blame code
      git-gui: Format author/committer times in ISO format
      Use .git/MERGE_MSG in cherry-pick/revert
      git-gui: Paperbag fix blame in subdirectory
      git gui 0.7.0
      Correct error message in revert/cherry-pick
      git-gui: Gracefully handle bad TCL_PATH at compile time

Steffen Prohaska (4):
      tiny fix in documentation of git-clone
      git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
      Optimized cvsexportcommit: calling 'cvs status' once instead of once per touched file.
      Fixed link in user-manual

Steven Grimm (3):
      Add --quiet option to suppress output of "rm" commands for removed files.
      git-rm: Trivial fix for a comment typo.
      Add --ignore-unmatch option to exit with zero status when no files are removed.

Theodore Ts'o (2):
      Add pack.depth option to git-pack-objects.
      Increase pack.depth default to 50

Tomash Brechko (1):
      cvsexportcommit -p : fix the usage of git-apply -C.

Uwe Kleine-König (1):
      fix importing of subversion tars

Ville Skyttä (1):
      DESTDIR support for git/contrib/emacs

Xavier Maillard (2):
      git-blame.el: separate git-blame-mode to ease maintenance
      git-blame.el: pick a set of random colors for each git-blame turn

YOSHIFUJI Hideaki (1):
      Avoid composing too long "References" header.

^ permalink raw reply

* [ANNOUNCE] GIT 1.5.1.6
From: Junio C Hamano @ 2007-05-20  9:08 UTC (permalink / raw)
  To: git

The latest maintenance release GIT 1.5.1.6 is available at the
usual places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.5.1.6.tar.{gz,bz2}			(tarball)
  git-htmldocs-1.5.1.6.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.5.1.6.tar.{gz,bz2}		(preformatted docs)
  RPMS/$arch/git-*-1.5.1.6-1.$arch.rpm	(RPM)

The release notes are relative to 1.5.1.4, as 1.5.1.5 was very
short-lived.

GIT v1.5.1.6 Release Notes
==========================

Fixes since v1.5.1.4
--------------------

* Bugfixes

  - git-send-email did not understand aliases file for mutt, which
    allows leading whitespaces.

  - git-format-patch emitted Content-Type and Content-Transfer-Encoding
    headers for non ASCII contents, but failed to add MIME-Version.

  - git-name-rev had a buffer overrun with a deep history.

  - contributed script import-tars did not get the directory in
    tar archives interpreted correctly.

  - git-svn was reported to segfault for many people on list and
    #git; hopefully this has been fixed.

  - git-svn also had a bug to crash svnserve by sending a bad
    sequence of requests.

  - "git-svn clone" does not try to minimize the URL
    (i.e. connect to higher level hierarchy) by default, as this
    can prevent clone to fail if only part of the repository
    (e.g. 'trunk') is open to public.

  - "git checkout branch^0" did not detach the head when you are
    already on 'branch'; backported the fix from the 'master'.

  - "git-config section.var" did not correctly work when
    existing configuration file had both [section] and [section "name"]
    next to each other.

  - "git clone ../other-directory" was fooled if the current
    directory $PWD points at is a symbolic link.

  - (build) tree_entry_extract() function was both static inline
    and extern, which caused trouble compiling with Forte12
    compilers on Sun.

  - Many many documentation fixes and updates.


----------------------------------------------------------------

Changes since v1.5.1.4 are as follows:

Alex Riesen (1):
      Allow fetching references from any namespace

Andy Whitcroft (1):
      git name-rev writes beyond the end of malloc() with large generations

Eric Wong (6):
      git-svn: don't drop the username from URLs when dcommit is run
      git-svn: clean up caching of SVN::Ra functions
      git-svn: fix segfaults due to initial SVN pool being cleared
      git-svn: don't attempt to minimize URLs by default
      git-svn: avoid crashing svnserve when creating new directories
      git-svn: don't minimize-url when doing an init that tracks multiple paths

Frank Lichtenheld (3):
      builtin-log.c: Fix typo in comment
      Documentation: format-patch has no --mbox option
      git-am: Clean up the asciidoc documentation

J. Bruce Fields (14):
      user-manual: revise birdseye-view chapter
      glossary: expand and clarify some definitions, prune cross-references
      user-manual: move quick-start to an appendix
      Documentation: remove howto's now incorporated into manual
      user-manual: move howto/make-dist.txt into user manual
      user-manual: move howto/using-topic-branches into manual
      user-manual: add a "counting commits" example
      user-manual: introduce git
      user-manual: listing commits reachable from some refs not others
      user-manual: reorganize public git repo discussion
      tutorials: add user-manual links
      tutorial: revise index introduction
      user-manual: discourage shared repository
      user-manual: finding commits referencing given file content

Jakub Narebski (1):
      gitweb: Add a few comments about %feature hash

Jan Hudec (1):
      Updated documentation of hooks in git-receive-pack.

Jari Aalto (1):
      SPECIFYING RANGES typo fix: it it => it is

Jeff King (1):
      format-patch: add MIME-Version header when we add content-type.

Johan Herland (1):
      user-manual: Add section on ignoring files

Johannes Schindelin (2):
      import-tars: Use the "Link indicator" to identify directories
      Add a birdview-on-the-source-code section to the user manual

Junio C Hamano (8):
      git-clone: don't get fooled by $PWD
      .mailmap: add some aliases
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
      Fix git-clone buglet for remote case.
      Prepare for 1.5.1.5 Release Notes
      GIT v1.5.1.5
      GIT 1.5.1.6

Marco Costalba (1):
      Fix an unmatched comment end in arm/sha1_arm.S

Matthias Kestenholz (2):
      Documentation: Added [verse] to SYNOPSIS where necessary
      Documentation: Reformatted SYNOPSIS for several commands

Matthieu Castet (1):
      Remove stale non-static-inline prototype for tree_entry_extract()

Michael Hendricks (2):
      git-send-email: allow leading white space on mutt aliases
      Document core.excludesfile for git-add

Petr Baudis (1):
      Documentation: git-rev-list's "patterns"

Quy Tonthat (2):
      RPM spec: include files in technical/ to package.
      Documentation/branch: fix small typo in -D example

Richard P. Curnow (2):
      Fix documentation of tag in git-fast-import.txt
      Fix documentation of tag in git-fast-import.txt

Shawn O. Pearce (1):
      Properly handle '0' filenames in import-tars

Steffen Prohaska (3):
      tiny fix in documentation of git-clone
      git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
      Fixed link in user-manual

^ permalink raw reply

* Re: merge summaries
From: Junio C Hamano @ 2007-05-20  9:07 UTC (permalink / raw)
  To: Steffen Prohaska; +Cc: Linus Torvalds, Git Mailing List
In-Reply-To: <7vwsz3rjb6.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano <junkio@cox.net> writes:

> Steffen Prohaska <prohaska@zib.de> writes:
>
>> But this is true not only for the upstream master but for every branch.
>> The first-parent-path of any commit documents (at least in summaries)
>> which features were introduced to the branch at which place. If a
>> topic pulls from upstream, features already available in the upstream
>> are introduced to the topic at this time. Why not summarize this?

Because it does not matter from the overall picture at that
point.  In an earlier message I said that the summary is useful
in a very short term -- the summary messages are useful while
the person who did the merge (or somebody who is simply
following him) is looking at near the tip of the branch, but
when you are later viewing the older parts of the history from
10,000 feet above, the distinction between what were pulled into
the local branch of the person who made the merge vs what the
person already had on the branch when he made the merge becomes
more or less irrelevant.  The end result is that the project now
got the fruits of labor that happened on both sides.

> Strictly speaking, it is not even correct with the upstream
> master.  I believe even my own 'maint' has fast forward merge
> that I pulled from other people, and that part of the history if
> you follow first-parent, you would not be following the "project's"
> history (if there is such a thing, and if you are equating it
> with "JC's view of the history").

Regrettably, I have to say that --first-parent is, although it is
often a useful way to get an approximation, a bad option that
tends to instill a wrong mental model to people new to git.

In git, unlike CVS and SVN (I do not know now Monotone,
Mercurial and BitKeeper's branches work with this respect),
branches in git do not have their "own" identity in global
history that is recorded in the commit ancestry graph.  The only
way you can ask "how did this branch come about to this state?"
is to look at your own reflog, and that is strictly a local
thing (i.e. the history as you observed it).

Even when you are "the upstream maintainer" [*1*], there are
cases where you pushed your tips out to the open, other people
built their work on top of it while you were not adding anything
to your tree, and you end up pulling from them.  Such a pull
will result in a fast-forward merge, and that is rightly so.
They did all the work, and the collective history of the project
during that time literally followed what the other person did,
not the "upstream maintainer".  However, from the point of view
of somebody who is following the upstream maintainer's tree,
what he would observe is that at one point of the time the tip
of the tree was the last commit the upstream maintainer pushed
out (which became the base of the other person's work), and then
the next time you look at the tree there are bunch of commits by
the other person, appearing all at once even though there is no
"real" merge commit that summarizes the work done on the "side
branch".  Which some of the readers might feel a bit confusing
and inconsistent, but that is really the correct interpretation
of the history.  The reason I feel --first-parent helps this
confusion is that people would think it would be consistent if
we do not allow fast-forward merges and instead always forced a
real merge in such a case (then you would consistently get the
merge summary).  In other words, the first parent is not
inherently special -- and people should view history that way,
but --first-parent and merge.summary give this false impression
that it is somehow special.

Anyhow, enough rambling for a day.  Now I have two releases
to do tonight ;-)

[Footnote]

*1* In git, strictly speaking, there is no up or down, but as a
social convention, I get updates from Shawn, Paulus, Bruce and
few other people via pull, and it would not be too incorrect to
say I'm more upstream than they are, and all others are more
downstream.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox