Git development
 help / color / mirror / Atom feed
* [PATCHv3] gitweb: generate project/action/hash URLs
From: Giuseppe Bilotta @ 2008-09-29 15:26 UTC (permalink / raw)
  To: git; +Cc: Jakub Narebski, Junio C Hamano, Shawn O. Pearce, Giuseppe Bilotta
In-Reply-To: <1222702017-4496-2-git-send-email-giuseppe.bilotta@gmail.com>

When generating path info URLs, reduce the number of CGI parameters by
embedding action and hash_parent:filename or hash in the path.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
 gitweb/gitweb.perl |   32 +++++++++++++++++++++++++++++---
 1 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index a3076bd..75d4178 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -657,14 +657,40 @@ sub href (%) {
 
 	my ($use_pathinfo) = gitweb_check_feature('pathinfo');
 	if ($use_pathinfo) {
-		# use PATH_INFO for project name
+		# try to put as many parameters as possible in PATH_INFO:
+		#   - project name
+		#   - action
+		#   - hash or hash_base:filename
+
+		# Strip any trailing / from $href, or we might get double
+		# slashes when the script is the DirectoryIndex
+		#
+		$href =~ s,/$,,;
+
+		# Then add the project name, if present
 		$href .= "/".esc_url($params{'project'}) if defined $params{'project'};
 		delete $params{'project'};
 
-		# Summary just uses the project path URL
-		if (defined $params{'action'} && $params{'action'} eq 'summary') {
+		# Summary just uses the project path URL, any other action is
+		# added to the URL
+		if (defined $params{'action'}) {
+			$href .= "/".esc_url($params{'action'}) unless $params{'action'} eq 'summary';
 			delete $params{'action'};
 		}
+
+		# Finally, we put either hash_base:/file_name or hash
+		if (defined $params{'hash_base'}) {
+			$href .= "/".esc_url($params{'hash_base'});
+			if (defined $params{'file_name'}) {
+				$href .= ":/".esc_url($params{'file_name'});
+				delete $params{'file_name'};
+			}
+			delete $params{'hash'};
+			delete $params{'hash_base'};
+		} elsif (defined $params{'hash'}) {
+			$href .= "/".esc_url($params{'hash'});
+			delete $params{'hash'};
+		}
 	}
 
 	# now encode the parameters explicitly
-- 
1.5.6.5

^ permalink raw reply related

* [PATCHv3] gitweb: parse parent..current syntax from pathinfo
From: Giuseppe Bilotta @ 2008-09-29 15:26 UTC (permalink / raw)
  To: git; +Cc: Jakub Narebski, Junio C Hamano, Shawn O. Pearce, Giuseppe Bilotta
In-Reply-To: <1222702017-4496-3-git-send-email-giuseppe.bilotta@gmail.com>

This makes it possible to use an URL such as
$project/somebranch..otherbranch:/filename to get a diff between
different version of a file. Paths like
$project/$action/somebranch:/somefile..otherbranch:/otherfile are parsed
as well.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
 gitweb/gitweb.perl |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 75d4178..7b4f2d3 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -560,7 +560,9 @@ sub evaluate_path_info {
 		$action  = undef;
 	}
 
-	my ($refname, $pathname) = split(/:/, $path_info, 2);
+	$path_info =~ /^((.+?)(:(.+))?\.\.)?(.+?)(:(.+))?$/;
+	my ($parentrefname, $parentpathname, $refname, $pathname) = (
+		$2, $4, $5, $7);
 	if (defined $pathname) {
 		# we got "project.git/action/branch:filename" or "project.git/action/branch:dir/"
 		# we could use git_get_type(branch:pathname), but it needs $git_dir
@@ -569,7 +571,11 @@ sub evaluate_path_info {
 			$action  ||= "tree";
 			$pathname =~ s,/$,,;
 		} else {
-			$action  ||= "blob_plain";
+			if ($parentrefname) {
+				$action ||= "blobdiff_plain";
+			} else {
+				$action  ||= "blob_plain";
+			}
 		}
 		$hash_base ||= validate_refname($refname);
 		$file_name ||= validate_pathname($pathname);
@@ -579,6 +585,22 @@ sub evaluate_path_info {
 		$hash      ||= validate_refname($refname);
 		$hash_base ||= validate_refname($refname);
 	}
+	# the parent part might be missing the pathname, in which case we use the $file_name, if present
+	if (defined $parentrefname) {
+		$hash_parent_base ||= validate_refname($parentrefname);
+		if ($parentpathname) {
+			$parentpathname =~ s,^/+,,;
+			$parentpathname =~ s,/$,,;
+			$file_parent ||= validate_pathname($parentpathname);
+		} else {
+			$file_parent ||= $file_name
+		}
+		if (defined $file_parent) {
+			$hash_parent ||= git_get_hash_by_path($hash_parent_base, $file_parent);
+		} else {
+			$hash_parent ||= validate_refname($parentrefname);
+		}
+	}
 }
 evaluate_path_info();
 
-- 
1.5.6.5

^ permalink raw reply related

* [PATCHv3] gitweb: generate parent..current URLs
From: Giuseppe Bilotta @ 2008-09-29 15:26 UTC (permalink / raw)
  To: git; +Cc: Jakub Narebski, Junio C Hamano, Shawn O. Pearce, Giuseppe Bilotta
In-Reply-To: <1222702017-4496-4-git-send-email-giuseppe.bilotta@gmail.com>

If use_pathinfo is enabled, href now creates links that contain paths in
the form $project/$action/oldhash:/oldname..newhash:/newname for actions
that use hash_parent etc.

If any of the filename contains two consecutive dots, it's kept as a CGI
parameter since the resulting path would otherwise be ambiguous.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
 gitweb/gitweb.perl |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 7b4f2d3..4fa4364 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -700,17 +700,36 @@ sub href (%) {
 			delete $params{'action'};
 		}
 
-		# Finally, we put either hash_base:/file_name or hash
+		# Next, we put hash_parent_base:/file_parent..hash_base:/file_name,
+		# stripping nonexistent or useless pieces
+		$href .= "/" if ($params{'hash_base'} || $params{'hash_parent_base'}
+			|| $params{'hash_parent'} || $params{'hash'});
 		if (defined $params{'hash_base'}) {
-			$href .= "/".esc_url($params{'hash_base'});
-			if (defined $params{'file_name'}) {
+			if (defined $params{'hash_parent_base'}) {
+				$href .= esc_url($params{'hash_parent_base'});
+				# skip the file_parent if it's the same as the file_name
+				delete $params{'file_parent'} if $params{'file_parent'} eq $params{'file_name'};
+				if (defined $params{'file_parent'} && $params{'file_parent'} !~ /\.\./) {
+					$href .= ":/".esc_url($params{'file_parent'});
+					delete $params{'file_parent'};
+				}
+				$href .= "..";
+				delete $params{'hash_parent'};
+				delete $params{'hash_parent_base'};
+			} elsif (defined $params{'hash_parent'}) {
+				$href .= esc_url($params{'hash_parent'}). "..";
+				delete $params{'hash_parent'};
+			}
+
+			$href .= esc_url($params{'hash_base'});
+			if (defined $params{'file_name'} && $params{'file_name'} !~ /\.\./) {
 				$href .= ":/".esc_url($params{'file_name'});
 				delete $params{'file_name'};
 			}
 			delete $params{'hash'};
 			delete $params{'hash_base'};
 		} elsif (defined $params{'hash'}) {
-			$href .= "/".esc_url($params{'hash'});
+			$href .= esc_url($params{'hash'});
 			delete $params{'hash'};
 		}
 	}
-- 
1.5.6.5

^ permalink raw reply related

* Re: [PATCH 4/4] cygwin: Use native Win32 API for stat
From: Shawn O. Pearce @ 2008-09-29 15:34 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Dmitry Potapov, git, Junio C Hamano, Alex Riesen, Marcus Griep
In-Reply-To: <200809281124.08364.johannes.sixt@telecom.at>

Johannes Sixt <johannes.sixt@telecom.at> wrote:
> On Samstag, 27. September 2008, Dmitry Potapov wrote:
> > On Sat, Sep 27, 2008 at 08:35:03PM +0200, Johannes Sixt wrote:
> > > > +core.cygwinNativeStat::
> > >
> > > This name is *really* odd, for two reasons:
> ...
> > It was Shawn's suggestion. I don't care much about the name as long as
> > it is explained in the documentation... Therefore, I accepted what Shawn
> > said without giving it any thought.
> 
> Shawn is an importen git-o-maniac, but it's certainly not blasphemy to 
> question his words of wisdom ;)

As Hannes points out, blindly accepting anything I say might not
be a good idea.  I have my moments of sanity, but I'm far, far
from perfect.  ;-)

> My point is that emphasis on "stat" in the name is wrong: That's about 
> implementation, but not about the effect. Why wouldn't 'ignoreCygwinFSTricks' 
> be specific enough?

I like this a lot better.  I could see us also bypassing other Cygwin
functions like open() in order to get faster system calls for Git.
Since it would be byassing the same Cygwin path name translation
code it should be controlled by the same flag.

> (And the length of the name doesn't 
> worry me, considering how many people would want to change the default.)

Agreed.  Most people setting it would copy and paste from the
documentation anyway.

I wonder though if we can't automatically implement it by grabbing
a copy of the Cygwin mount table and comparing those paths to
$GIT_DIR or $GIT_WORK_TREE.  If any mount table entry is contained
within either of them then we know we can't use the native stat.
Its rather common for neither of these to contain a mount point,
and it is therefore easy to enable the native stat.

-- 
Shawn.

^ permalink raw reply

* Re: [PATCH 1/3] Prepare for non-interactive merge-preserving rebase
From: Shawn O. Pearce @ 2008-09-29 16:01 UTC (permalink / raw)
  To: Andreas Ericsson; +Cc: Stephen Haberman, Git Mailing List, Junio C Hamano
In-Reply-To: <48DE7386.2080808@op5.se>

Andreas Ericsson <ae@op5.se> wrote:
>
> Shawn, I haven't seen this in any of your branches. Overlooked or
> dropped? I think 1-2 are probably master material, while I'm not
> so sure about 3/3. Would you prefer a re-send that turns it into
> a 2-patch series, adding each test with the functionality it tests?

Thanks for the reminder.  It just got lost in the shuffle.  I dragged
them out of the archives and will queue into this morning's update,
so no need for a resend.

-- 
Shawn.

^ permalink raw reply

* [PATCH] Clarify commit error message for unmerged files
From: Rafael Garcia-Suarez @ 2008-09-29 16:04 UTC (permalink / raw)
  To: git; +Cc: Rafael Garcia-Suarez

Currently, trying to use git-commit with unmerged files in the index
will show the message "Error building trees", which can be a bit
obscure to the end user. This patch makes the error message clearer, and
consistent with what git-write-tree reports in a similar situation.

Signed-off-by: Rafael Garcia-Suarez <rgarciasuarez@gmail.com>
---
 builtin-commit.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-commit.c b/builtin-commit.c
index 8165bb3..6b23143 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -639,7 +639,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix)
 		active_cache_tree = cache_tree();
 	if (cache_tree_update(active_cache_tree,
 			      active_cache, active_nr, 0, 0) < 0) {
-		error("Error building trees");
+		error("Error building trees; the index is unmerged?");
 		return 0;
 	}
 
-- 
1.6.0.2.307.gc4275.dirty

^ permalink raw reply related

* Re: [PATCH 1/3] Prepare for non-interactive merge-preserving rebase
From: Andreas Ericsson @ 2008-09-29 16:04 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Stephen Haberman, Git Mailing List, Junio C Hamano
In-Reply-To: <20080929160153.GK17584@spearce.org>

Shawn O. Pearce wrote:
> Andreas Ericsson <ae@op5.se> wrote:
>> Shawn, I haven't seen this in any of your branches. Overlooked or
>> dropped? I think 1-2 are probably master material, while I'm not
>> so sure about 3/3. Would you prefer a re-send that turns it into
>> a 2-patch series, adding each test with the functionality it tests?
> 
> Thanks for the reminder.  It just got lost in the shuffle.  I dragged
> them out of the archives and will queue into this morning's update,
> so no need for a resend.
> 

Hold off on that if you haven't already applied them. I just noticed
something strange in passing 15 minutes ago that I need to investigate
a bit more. I need to get home now though, so I won't have time to
test it further until later tonight.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

^ permalink raw reply

* Re: [PATCH 1/3] Prepare for non-interactive merge-preserving rebase
From: Shawn O. Pearce @ 2008-09-29 16:11 UTC (permalink / raw)
  To: Andreas Ericsson; +Cc: Stephen Haberman, Git Mailing List, Junio C Hamano
In-Reply-To: <48E0FC86.3040001@op5.se>

Andreas Ericsson <ae@op5.se> wrote:
> Shawn O. Pearce wrote:
>> Andreas Ericsson <ae@op5.se> wrote:
>>> Shawn, I haven't seen this in any of your branches. Overlooked or
>>> dropped? 
>>
>> Thanks for the reminder.  It just got lost in the shuffle.
>
> Hold off on that if you haven't already applied them. I just noticed
> something strange in passing 15 minutes ago that I need to investigate
> a bit more. I need to get home now though, so I won't have time to
> test it further until later tonight.

Its only in a topic branch right now.  I'll schedule them into 'pu'
today just so they are available, but I'll be happy to replace any
(or all) of the patches when you come up with something better.

-- 
Shawn.

^ permalink raw reply

* Re: [RFC 8/9] Docs: send-email: Create logical groupings for --help text
From: Jeff King @ 2008-09-29 16:25 UTC (permalink / raw)
  To: Michael Witten; +Cc: jnareb, git
In-Reply-To: <1222664892-55810-3-git-send-email-mfwitten@mit.edu>

On Mon, Sep 29, 2008 at 12:08:11AM -0500, Michael Witten wrote:

> The options are partitioned into more digestible groups.

With patches 6, 8, and 9, the output is much improved. I'm not sure I
agree with all of the heading classification choices, but I first read
those options long enough ago that I no longer have any idea where I
would _expect_ to find them. So I will let others comment on that if
they want.

-Peff

^ permalink raw reply

* Re: [RFC 7/9] send-email: Completely replace --signed-off-cc with --signed-off-by-cc
From: Jeff King @ 2008-09-29 16:29 UTC (permalink / raw)
  To: Michael Witten; +Cc: jnareb, git
In-Reply-To: <1222664781-55763-2-git-send-email-mfwitten@mit.edu>

On Mon, Sep 29, 2008 at 12:06:19AM -0500, Michael Witten wrote:

> This breaks backwards compatibility, but so what---get off your
> lazy arses and remove the cruft.

Sorry, but try to be a lot more careful than that about breaking
compatibility. The right sequence is:

  1. Introduce new option (which has already been done for the command
     line, but it looks like you are adding a new config variable).

     Mention the new option in the documentation as the "right way".

     Possibly mention the old version as "deprecated".

  2. Wait a long time, possibly forever. This gives people a chance to
     adjust, and it lets us wait for a major version bump where such an
     incompatibility might be more expected.

  3. Remove the old option.

So I think you are skipping straight to '3' here. However, I think your
real purpose is to simply clean up the documentation, so why not just do
that? We can still support the old options for historical setups, and
just advertise the new ones in the docs.

-Peff

^ permalink raw reply

* Re: [PATCH] parse-opt: migrate fmt-merge-msg.
From: Shawn O. Pearce @ 2008-09-29 16:35 UTC (permalink / raw)
  To: Pierre Habouzit; +Cc: git, gitster
In-Reply-To: <1222595139-32087-2-git-send-email-madcoder@debian.org>

Pierre Habouzit <madcoder@debian.org> wrote:
> Also fix an inefficient printf("%s", ...) where we can use write_in_full.
> 
> Signed-off-by: Pierre Habouzit <madcoder@debian.org>
> ---
>  builtin-fmt-merge-msg.c |   50 +++++++++++++++++++++-------------------------
>  1 files changed, 23 insertions(+), 27 deletions(-)

Near as I can tell, this is based upon a merge commit in next.

We can't do that.  Patches need to be based on master, or worst-case
on a topic head that is in next or pu (in which case the name of
the topic, or its tip commit, is helpful in the note).

-- 
Shawn.

^ permalink raw reply

* [PATCH] make prune report removed objects on -v
From: Michael J Gruber @ 2008-09-29 16:49 UTC (permalink / raw)
  To: git; +Cc: Michael J Gruber

This adds an option "-v" which makes "git prune" more verbose:
It outputs all removed objects while removing them.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
 Documentation/git-prune.txt |    5 ++++-
 builtin-prune.c             |   10 +++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/Documentation/git-prune.txt b/Documentation/git-prune.txt
index 54f1dab..da6055d 100644
--- a/Documentation/git-prune.txt
+++ b/Documentation/git-prune.txt
@@ -8,7 +8,7 @@ git-prune - Prune all unreachable objects from the object database
 
 SYNOPSIS
 --------
-'git-prune' [-n] [--expire <expire>] [--] [<head>...]
+'git-prune' [-n] [-v] [--expire <expire>] [--] [<head>...]
 
 DESCRIPTION
 -----------
@@ -34,6 +34,9 @@ OPTIONS
 	Do not remove anything; just report what it would
 	remove.
 
+-v::
+	Report all removed objects.
+
 \--::
 	Do not interpret any more arguments as options.
 
diff --git a/builtin-prune.c b/builtin-prune.c
index 1663f8b..7b4ec80 100644
--- a/builtin-prune.c
+++ b/builtin-prune.c
@@ -7,10 +7,11 @@
 #include "parse-options.h"
 
 static const char * const prune_usage[] = {
-	"git prune [-n] [--expire <time>] [--] [<head>...]",
+	"git prune [-n] [-v] [--expire <time>] [--] [<head>...]",
 	NULL
 };
 static int show_only;
+static int verbose;
 static unsigned long expire;
 
 static int prune_tmp_object(const char *path, const char *filename)
@@ -39,11 +40,12 @@ static int prune_object(char *path, const char *filename, const unsigned char *s
 		if (st.st_mtime > expire)
 			return 0;
 	}
-	if (show_only) {
+	if (show_only || verbose) {
 		enum object_type type = sha1_object_info(sha1, NULL);
 		printf("%s %s\n", sha1_to_hex(sha1),
 		       (type > 0) ? typename(type) : "unknown");
-	} else
+	}
+	if (!show_only)
 		unlink(fullpath);
 	return 0;
 }
@@ -135,6 +137,8 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
 	const struct option options[] = {
 		OPT_BOOLEAN('n', NULL, &show_only,
 			    "do not remove, show only"),
+		OPT_BOOLEAN('v', NULL, &verbose,
+			"report pruned objects"),
 		OPT_DATE(0, "expire", &expire,
 			 "expire objects older than <time>"),
 		OPT_END()
-- 
1.6.0.2.287.g3791f

^ permalink raw reply related

* [RFC2 9/9] send-email: signedoffcc -> signedoffbycc, but handle both
From: Michael Witten @ 2008-09-29 17:41 UTC (permalink / raw)
  To: git; +Cc: Jeff King
In-Reply-To: <1222710066-57768-1-git-send-email-mfwitten@mit.edu>

The documentation now mentions sendemail.signedoffbycc instead
of sendemail.signedoffcc in order to match with the options
--signed-off-by-cc; the code has been updated to reflect this
as well, but sendemail.signedoffcc is still handled.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
---
 Documentation/git-send-email.txt |    2 +-
 git-send-email.perl              |    9 +++++----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index d566c34..82f5056 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -144,7 +144,7 @@ Automating
 
 --[no-]signed-off-by-cc::
 	If this is set, add emails found in Signed-off-by: or Cc: lines to the
-	cc list. Default is the value of 'sendemail.signedoffcc' configuration
+	cc list. Default is the value of 'sendemail.signedoffbycc' configuration
 	value; if that is unspecified, default to --signed-off-by-cc.
 
 --suppress-cc::
diff --git a/git-send-email.perl b/git-send-email.perl
index 80dae88..bdbfac6 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -151,7 +151,7 @@ if ($@) {
 my ($quiet, $dry_run) = (0, 0);
 
 # Variables with corresponding config settings
-my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
+my ($thread, $chain_reply_to, $suppress_from, $signed_off_by_cc, $cc_cmd);
 my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_encryption);
 my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);
 my ($validate);
@@ -161,7 +161,8 @@ my %config_bool_settings = (
     "thread" => [\$thread, 1],
     "chainreplyto" => [\$chain_reply_to, 1],
     "suppressfrom" => [\$suppress_from, undef],
-    "signedoffcc" => [\$signed_off_cc, undef],
+    "signedoffbycc" => [\$signed_off_by_cc, undef],
+    "signedoffcc" => [\$signed_off_by_cc, undef],      # Deprecated
     "validate" => [\$validate, 1],
 );
 
@@ -225,7 +226,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
 		    "cc-cmd=s" => \$cc_cmd,
 		    "suppress-from!" => \$suppress_from,
 		    "suppress-cc=s" => \@suppress_cc,
-		    "signed-off-cc|signed-off-by-cc!" => \$signed_off_cc,
+		    "signed-off-cc|signed-off-by-cc!" => \$signed_off_by_cc,
 		    "dry-run" => \$dry_run,
 		    "envelope-sender=s" => \$envelope_sender,
 		    "thread!" => \$thread,
@@ -301,7 +302,7 @@ if ($suppress_cc{'all'}) {
 
 # If explicit old-style ones are specified, they trump --suppress-cc.
 $suppress_cc{'self'} = $suppress_from if defined $suppress_from;
-$suppress_cc{'sob'} = !$signed_off_cc if defined $signed_off_cc;
+$suppress_cc{'sob'} = !$signed_off_by_cc if defined $signed_off_by_cc;
 
 # Debugging, print out the suppressions.
 if (0) {
-- 
1.6.0.2.304.gdcf23.dirty

^ permalink raw reply related

* [RFC2 8/9] Docs: send-email: Create logical groupings for man text
From: Michael Witten @ 2008-09-29 17:41 UTC (permalink / raw)
  To: git; +Cc: Jeff King
In-Reply-To: <20080929162935.GA2628@coredump.intra.peff.net>

The options are partitioned into more digestible groups.
Within these groups, the options are sorted alphabetically.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
---
 Documentation/git-send-email.txt |  119 ++++++++++++++++++++++----------------
 1 files changed, 69 insertions(+), 50 deletions(-)

diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 0d6ac4a..d566c34 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -19,9 +19,12 @@ The header of the email is configurable by command line options.  If not
 specified on the command line, the user will be prompted with a ReadLine
 enabled interface to provide the necessary information.
 
+
 OPTIONS
 -------
-The options available are:
+
+Composing
+~~~~~~~~~
 
 --bcc::
 	Specify a "Bcc:" value for each email. Default is the value of
@@ -34,46 +37,15 @@ The --bcc option must be repeated for each user you want on the bcc list.
 +
 The --cc option must be repeated for each user you want on the cc list.
 
---cc-cmd::
-	Specify a command to execute once per patch file which
-	should generate patch file specific "Cc:" entries.
-	Output of this command must be single email address per line.
-	Default is the value of 'sendemail.cccmd' configuration value.
-
---[no-]chain-reply-to::
-	If this is set, each email will be sent as a reply to the previous
-	email sent.  If disabled with "--no-chain-reply-to", all emails after
-	the first will be sent as replies to the first email sent.  When using
-	this, it is recommended that the first file given be an overview of the
-	entire patch series. Default is the value of the 'sendemail.chainreplyto'
-	configuration value; if that is unspecified, default to --chain-reply-to.
-
 --compose::
 	Use $GIT_EDITOR, core.editor, $VISUAL, or $EDITOR to edit an
 	introductory message for the patch series.
 
---dry-run::
-	Do everything except actually send the emails.
-
---envelope-sender::
-	Specify the envelope sender used to send the emails.
-	This is useful if your default address is not the address that is
-	subscribed to a list. If you use the sendmail binary, you must have
-	suitable privileges for the -f parameter. Default is the value of
-	the 'sendemail.envelopesender' configuration variable; if that is
-	unspecified, choosing the envelope sender is left to your MTA.
-
 --from::
 	Specify the sender of the emails.  This will default to
 	the value GIT_COMMITTER_IDENT, as returned by "git var -l".
 	The user will still be prompted to confirm this entry.
 
---identity::
-	A configuration identity. When given, causes values in the
-	'sendemail.<identity>' subsection to take precedence over
-	values in the 'sendemail' section. The default identity is
-	the value of 'sendemail.identity'.
-
 --in-reply-to::
 	Specify the contents of the first In-Reply-To header.
 	Subsequent emails will refer to the previous email
@@ -81,14 +53,30 @@ The --cc option must be repeated for each user you want on the cc list.
 	Only necessary if --compose is also set.  If --compose
 	is not set, this will be prompted for.
 
---quiet::
-	Make git-send-email less verbose.  One line per email should be
-	all that is output.
+--subject::
+	Specify the initial subject of the email thread.
+	Only necessary if --compose is also set.  If --compose
+	is not set, this will be prompted for.
 
---[no-]signed-off-by-cc::
-	If this is set, add emails found in Signed-off-by: or Cc: lines to the
-	cc list. Default is the value of 'sendemail.signedoffcc' configuration
-	value; if that is unspecified, default to --signed-off-by-cc.
+--to::
+	Specify the primary recipient of the emails generated. Generally, this
+	will be the upstream maintainer of the project involved. Default is the
+	value of the 'sendemail.to' configuration value; if that is unspecified,
+	this will be prompted for.
++
+The --to option must be repeated for each user you want on the to list.
+
+
+Sending
+~~~~~~~
+
+--envelope-sender::
+	Specify the envelope sender used to send the emails.
+	This is useful if your default address is not the address that is
+	subscribed to a list. If you use the sendmail binary, you must have
+	suitable privileges for the -f parameter. Default is the value of
+	the 'sendemail.envelopesender' configuration variable; if that is
+	unspecified, choosing the envelope sender is left to your MTA.
 
 --smtp-encryption::
 	Specify the encryption to use, either 'ssl' or 'tls'.  Any other
@@ -130,10 +118,34 @@ user is prompted for a password while the input is masked for privacy.
 	if a username is not specified (with '--smtp-user' or 'sendemail.smtpuser'),
 	then authentication is not attempted.
 
---subject::
-	Specify the initial subject of the email thread.
-	Only necessary if --compose is also set.  If --compose
-	is not set, this will be prompted for.
+
+Automating
+~~~~~~~~~~
+
+--cc-cmd::
+	Specify a command to execute once per patch file which
+	should generate patch file specific "Cc:" entries.
+	Output of this command must be single email address per line.
+	Default is the value of 'sendemail.cccmd' configuration value.
+
+--[no-]chain-reply-to::
+	If this is set, each email will be sent as a reply to the previous
+	email sent.  If disabled with "--no-chain-reply-to", all emails after
+	the first will be sent as replies to the first email sent.  When using
+	this, it is recommended that the first file given be an overview of the
+	entire patch series. Default is the value of the 'sendemail.chainreplyto'
+	configuration value; if that is unspecified, default to --chain-reply-to.
+
+--identity::
+	A configuration identity. When given, causes values in the
+	'sendemail.<identity>' subsection to take precedence over
+	values in the 'sendemail' section. The default identity is
+	the value of 'sendemail.identity'.
+
+--[no-]signed-off-by-cc::
+	If this is set, add emails found in Signed-off-by: or Cc: lines to the
+	cc list. Default is the value of 'sendemail.signedoffcc' configuration
+	value; if that is unspecified, default to --signed-off-by-cc.
 
 --suppress-cc::
 	Specify an additional category of recipients to suppress the
@@ -157,13 +169,16 @@ user is prompted for a password while the input is masked for privacy.
 	header set. Default is the value of the 'sendemail.thread' configuration
 	value; if that is unspecified, default to --thread.
 
---to::
-	Specify the primary recipient of the emails generated. Generally, this
-	will be the upstream maintainer of the project involved. Default is the
-	value of the 'sendemail.to' configuration value; if that is unspecified,
-	this will be prompted for.
-+
-The --to option must be repeated for each user you want on the to list.
+
+Administering
+~~~~~~~~~~~~~
+
+--dry-run::
+	Do everything except actually send the emails.
+
+--quiet::
+	Make git-send-email less verbose.  One line per email should be
+	all that is output.
 
 --[no-]validate::
 	Perform sanity checks on patches.
@@ -180,6 +195,7 @@ default to '--validate'.
 
 CONFIGURATION
 -------------
+
 sendemail.aliasesfile::
 	To avoid typing long email addresses, point this to one or more
 	email aliases files.  You must also supply 'sendemail.aliasfiletype'.
@@ -188,6 +204,7 @@ sendemail.aliasfiletype::
 	Format of the file(s) specified in sendemail.aliasesfile. Must be
 	one of 'mutt', 'mailrc', 'pine', or 'gnus'.
 
+
 Author
 ------
 Written by Ryan Anderson <ryan@michonline.com>
@@ -195,10 +212,12 @@ Written by Ryan Anderson <ryan@michonline.com>
 git-send-email is originally based upon
 send_lots_of_email.pl by Greg Kroah-Hartman.
 
+
 Documentation
 --------------
 Documentation by Ryan Anderson
 
+
 GIT
 ---
 Part of the linkgit:git[1] suite
-- 
1.6.0.2.304.gdcf23.dirty

^ permalink raw reply related

* Re: [RFC2 9/9] send-email: signedoffcc -> signedoffbycc, but handle both
From: Jeff King @ 2008-09-29 17:44 UTC (permalink / raw)
  To: Michael Witten; +Cc: git
In-Reply-To: <1222710066-57768-2-git-send-email-mfwitten@mit.edu>

On Mon, Sep 29, 2008 at 12:41:06PM -0500, Michael Witten wrote:

> The documentation now mentions sendemail.signedoffbycc instead
> of sendemail.signedoffcc in order to match with the options
> --signed-off-by-cc; the code has been updated to reflect this
> as well, but sendemail.signedoffcc is still handled.

This new series looks fine to me.

-Peff

^ permalink raw reply

* Re: [PATCH 6/6] gitweb: prevent double slashes in PATH_INFO hrefs
From: Jakub Narebski @ 2008-09-29 18:12 UTC (permalink / raw)
  To: Giuseppe Bilotta; +Cc: git, Petr Baudis, Lea Wiemann, Junio C Hamano
In-Reply-To: <1222030663-22540-7-git-send-email-giuseppe.bilotta@gmail.com>

On Sun, 21 Sep 2008, Giuseppe Bilotta wrote:

> When using PATH_INFO in combination with a rewrite rule that hides the
> cgi script name, links to projects and/or actions without projects might
> be generated with a double slash.
> 

You mean here that base URL ends with '/'?

> Fix by removing the trailing slash (if present) from $href before
> appending PATH_INFO data.
> 
> Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>

Acked-by: Jakub Narebski <jnareb@gmail.com>

This is a good change, and worth applying even before the rest of
series (which probably would go through a few rounds of review).
I'm not sure if it applies cleanly, but conceptually it does not
depend on the rest of patches in this series.

> ---
>  gitweb/gitweb.perl |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 4a91d07..ebab86b 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -675,6 +675,8 @@ sub href (%) {
>  
>  	my ($use_pathinfo) = gitweb_check_feature('pathinfo');
>  	if ($use_pathinfo) {
> +		$href =~ s,/$,,;
> +
>  		# use PATH_INFO for project name
>  		$href .= "/".esc_url($params{'project'}) if defined $params{'project'};
>  		delete $params{'project'};
> -- 
> 1.5.6.5
> 
> 

Should not go wrong...

-- 
Jakub Narebski
Poland

^ permalink raw reply

* Re: [PATCH] Fix typo in release notes for 1.6.0.3
From: Miklos Vajna @ 2008-09-29 18:15 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: git
In-Reply-To: <20080929150858.GH17584@spearce.org>

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

On Mon, Sep 29, 2008 at 08:08:58AM -0700, "Shawn O. Pearce" <spearce@spearce.org> wrote:
> Actually maybe that typo was a good thing.  The commit was about
> erroring out on typos rather than silently applying stash@{0}.

Aah. Sorry for the noise, then.

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

^ permalink raw reply

* Re: [PATCH] builtin-commit: avoid using reduce_heads()
From: Miklos Vajna @ 2008-09-29 18:18 UTC (permalink / raw)
  To: Jakub Narebski
  Cc: SZEDER Gábor, git, Shawn O. Pearce, Johannes.Schindelin
In-Reply-To: <20080929150722.GU23137@genesis.frugalware.org>

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

On Mon, Sep 29, 2008 at 05:07:22PM +0200, Miklos Vajna <vmiklos@frugalware.org> wrote:
> > Currently parents of merge commits are 'reduce(HEAD + MERGE_HEAD)'
> > in symbolic equation; I propose they would be simply 'MERGE_HEAD'.
> > then we set this branch to new commit
> 
> Yes. Currently - after a merge conflict - you are able to check what
> heads caused were merged, which caused the conflict, but with this
> approach you would not be able to. I think this would be a step back...

Uh, I should read my mail before sending it next time.

I just wanted to say that in case, for example, I merge A^ and A, but I
get a conflict after octopus tried to merge A^ then it can be a useful
info to see that A^ was a head. Putting reduce(HEAD + MERGE_HEAD) to
MERGE_HEAD would hide this info, which would make the situation worse,
IMHO.

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

^ permalink raw reply

* Re: [PATCH 4/4] cygwin: Use native Win32 API for stat
From: Dmitry Potapov @ 2008-09-29 18:26 UTC (permalink / raw)
  To: Shawn O. Pearce
  Cc: Johannes Sixt, git, Junio C Hamano, Alex Riesen, Marcus Griep
In-Reply-To: <20080929153400.GJ17584@spearce.org>

On Mon, Sep 29, 2008 at 08:34:00AM -0700, Shawn O. Pearce wrote:
> Johannes Sixt <johannes.sixt@telecom.at> wrote:
> 
> > My point is that emphasis on "stat" in the name is wrong: That's about 
> > implementation, but not about the effect. Why wouldn't 'ignoreCygwinFSTricks' 
> > be specific enough?
> 
> I like this a lot better.  I could see us also bypassing other Cygwin
> functions like open() in order to get faster system calls for Git.

If you think that it may be useful to bypass some other functions, and
you want to use the same option to control that then a general name like
that makes sense. Personally, I don't believe that we may want to bypass
something like open() as it is not performance critical, but I said
above I don't care about the name much, so I am going to change my patch
to use ignoreCygwinFSTricks.

Dmitry

^ permalink raw reply

* Re: [PATCH 3/4] mingw: move common functionality to win32.h
From: Dmitry Potapov @ 2008-09-29 18:37 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: git, Junio C Hamano, Shawn O. Pearce, Alex Riesen, Marcus Griep
In-Reply-To: <200809281110.48256.johannes.sixt@telecom.at>

On Sun, Sep 28, 2008 at 11:10:48AM +0200, Johannes Sixt wrote:
> On Samstag, 27. September 2008, Dmitry Potapov wrote:
> > win32_to_errno was the first thing that implemented but then released
> > that translation of Win32 errors to errno cannot be in general case.
> > For instance, ERROR_BUFFER_OVERFLOW means ENAMETOOLONG here, but it
> > can be translated to ETOOSMALL in other cases. How do you propose to
> > deal with that?
> 
> We deal with that when the need arises, in an evolutionary manner. The first 
> step is to *have* an error code translation routine.

Step to what? IMHO, the idea of win32_to_errno is deeply flawed, and, in
any case, refactoring handling of Win32 error in MinGW is not the
purpose of my series. If you want to introduce win32_to_errno in mingw,
you can send your own patch to that effect, and we can discuss that
separately. So far, I am not convinced that it will improve anything in
the existing code. As to avoiding duplication of Win32 specific code,
get_file_attr() fits better.  So, let's proceed step-wise, and first
finish one thing, namely, speed-up of Cygwin version of Git and then
discuss adding win32_to_errno to MinGW.


Dmitry

^ permalink raw reply

* Re: [PATCH] builtin-commit: avoid using reduce_heads()
From: Jakub Narebski @ 2008-09-29 18:44 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: SZEDER Gábor, git, Shawn O. Pearce, Johannes.Schindelin
In-Reply-To: <20080929181856.GX23137@genesis.frugalware.org>

Dnia poniedziałek 29. września 2008 20:18, Miklos Vajna napisał:
> On Mon, Sep 29, 2008 at 05:07:22PM +0200, Miklos Vajna <vmiklos@frugalware.org> wrote:

> > > Currently parents of merge commits are 'reduce(HEAD + MERGE_HEAD)'
> > > in symbolic equation; I propose they would be simply 'MERGE_HEAD'.
> > > then we set this branch to new commit
> > 
> > Yes. Currently - after a merge conflict - you are able to check what
> > heads caused were merged, which caused the conflict, but with this
> > approach you would not be able to. I think this would be a step back...
> 
> Uh, I should read my mail before sending it next time.
> 
> I just wanted to say that in case, for example, I merge A^ and A, but I
> get a conflict after octopus tried to merge A^ then it can be a useful
> info to see that A^ was a head. Putting reduce(HEAD + MERGE_HEAD) to
> MERGE_HEAD would hide this info, which would make the situation worse,
> IMHO.

I don't understand: I thought that merge strategy gets _reduced_ heads.
Moreover, if head reduction reduces number of heads to two, you would
use twohead merge (recursive) instead of octopus, and fast-forward if
there is only one head after reduction.

All that I proposed is to put those reduced heads into MERGE_HEAD.
I did not proposed to put yet unresolved heads in MERGE_HEAD in case
of octopus merge conflict. I think either you misunderstood me, or
I misunderstood you.

Take for example the following case of
[H@repo]$ git merge a b c

   .---.---.---.---H                   <-- H <-- HEAD
                    \
                     \.---.---.---a    <-- a
                           \
                            \-b        <-- b
                               \                              
                                \--c   <-- c

Currently after failed merge we have:
HEAD: 
  refs: refs/heads/H
MERGE_HEAD
  sha1(a)
  sha1(b)
  sha1(c)

I propose it to be
HEAD:
  refs: refs/heads/H
MERGE_HEAD
  sha1(a)
  sha1(c)

And merge strategy chosen would be twohead one (recursive).


If the situation was slightly different

   .---.---.---.---.--.---.---.---H    <-- H <-- HEAD
                    \
                     \.---.---.---a    <-- a
                           \
                            \-b        <-- b
                               \                              
                                \--c   <-- c


I propose it to be
HEAD:
  refs: refs/heads/H
MERGE_HEAD
  sha1(H)
  sha1(a)
  sha1(c)

And merge strategy chosen would be octopus.

-- 
Jakub Narebski
Poland

^ permalink raw reply

* What's in git/spearce.git (Sep 2008, #04; Mon, 29)
From: Shawn O. Pearce @ 2008-09-29 18:46 UTC (permalink / raw)
  To: git

What's in git/spearce.git (Sep 2008, #04; Mon, 29)

  maint edb7e82 (Merge branch 'bc/maint-diff-hunk-header-fix' into maint)
 master 9800c0d (Merge branch 'bc/master-diff-hunk-header-fix')
------------------------------------------------------------------------

With Junio offline for another week we won't see a 1.6.0.3 until
probably mid-October.  With that in mind I've merged a number of
topics and trivial patches to maint so we can shake these out
before the 1.6.0.3 release.

* The 'maint' branch has these fixes since the last announcement.

Alex Riesen (3):
  Remove empty directories in recursive merge
  Add remove_path: a function to remove as much as possible of a path
  Use remove_path from dir.c instead of own implementation

Brandon Casey (5):
  diff.c: return pattern entry pointer rather than just the hunk header
    pattern
  diff.c: associate a flag with each pattern and use it for compiling regex
  diff.*.xfuncname which uses "extended" regex's for hunk header selection
  t4018-diff-funcname: test syntax of builtin xfuncname patterns
  git-stash.sh: don't default to refs/stash if invalid ref supplied

Chris Frey (1):
  Documentation: clarify the details of overriding LESS via core.pager

Deskin Miller (1):
  maint: check return of split_cmdline to avoid bad config strings

Johan Herland (2):
  for-each-ref: Fix --format=%(subject) for log message without newlines
  Use strchrnul() instead of strchr() plus manual workaround

Jonas Fonseca (1):
  checkout: Do not show local changes when in quiet mode

Junio C Hamano (2):
  diff: use extended regexp to find hunk headers
  diff hunk pattern: fix misconverted "\{" tex macro introducers

Michael J Gruber (1):
  make "git remote" report multiple URLs

Ping Yin (1):
  git-submodule: Fix "Unable to checkout" for the initial 'update'

Rafael Garcia-Suarez (1):
  Clarify commit error message for unmerged files

Shawn O. Pearce (1):
  Update release notes for 1.6.0.3

Stephen Haberman (1):
  Clarify how the user can satisfy stash's 'dirty state' check.


* The 'master' branch has these since the last announcement
  in addition to the above.

Alex Riesen (1):
  Cleanup remove_path

Alexander Gavrilov (9):
  git-gui: Fix Blame Parent & Context for working copy lines.
  git-gui: Restore ability to Stage Working Copy for conflicts.
  git-gui: Add more integration options to citool.
  git-gui: Cleanup handling of the default encoding.
  git-gui: Add a menu of available encodings.
  git-gui: Allow forcing display encoding for diffs using a submenu.
  git-gui: Optimize encoding name resolution using a lookup table.
  git-gui: Support the encoding menu in gui blame.
  git-gui: Reenable staging unmerged files by clicking the icon.

Anders Melchiorsen (2):
  wt-status: Split header generation into three functions
  wt-status: Teach how to discard changes in the working directory

Brandon Casey (1):
  t4018-diff-funcname: test syntax of builtin xfuncname patterns

Christian Stimming (2):
  git-gui: I18n fix sentence parts into full sentences for translation
    again.
  git-gui: Updated German translation.

Dmitry Potapov (1):
  mingw: remove use of _getdrive() from lstat/fstat

Garry Dolley (1):
  Fixed some grammatical errors in git-rebase.txt documentation.

Giuseppe Bilotta (1):
  gitweb: shortlog now also obeys $hash_parent

Heikki Orsila (1):
  diff --dirstat-by-file: count changed files, not lines

Johan Herland (2):
  Fix AsciiDoc errors in merge documentation
  Fix submodule sync with relative submodule URLs

Johannes Sixt (1):
  compat/mingw: Support a timeout in the poll emulation if no fds are given

Joshua Williams (1):
  git-gui: Add support for calling out to the prepare-commit-msg hook

Junio C Hamano (21):
  checkout -f: allow ignoring unmerged paths when checking out of the index
  checkout --ours/--theirs: allow checking out one side of a conflicting
    merge
  xdl_fill_merge_buffer(): separate out a too deeply nested function
  xdiff-merge: optionally show conflicts in "diff3 -m" style
  xmerge.c: minimum readability fixups
  xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or less
  rerere.c: use symbolic constants to keep track of parsing states
  rerere: understand "diff3 -m" style conflicts with the original
  merge.conflictstyle: choose between "merge" and "diff3 -m" styles
  git-merge-recursive: learn to honor merge.conflictstyle
  checkout -m: recreate merge when checking out of unmerged index
  checkout --conflict=<style>: recreate merge in a non-default style
  git-merge documentation: describe how conflict is presented
  safe_create_leading_directories(): make it about "leading" directories
  git-apply:--include=pathspec
  is_directory(): a generic helper function
  receive-pack: make it a builtin
  push: prepare sender to receive extended ref information from the
    receiver
  push: receiver end advertises refs from alternate repositories
  diff: use extended regexp to find hunk headers
  diff: fix "multiple regexp" semantics to find hunk header comment

Miklos Vajna (13):
  Split out merge_recursive() to merge-recursive.c
  merge-recursive: introduce merge_options
  builtin-merge: avoid run_command_v_opt() for recursive and subtree
  cherry-pick/revert: make direct internal call to merge_tree()
  merge-recursive: move call_depth to struct merge_options
  merge-recursive: get rid of the index_only global variable
  merge-recursive: move the global obuf to struct merge_options
  merge-recursive: move current_{file,directory}_set to struct
    merge_options
  merge-recursive: get rid of virtual_id
  builtin-merge: release the lockfile in try_merge_strategy()
  commit_tree(): add a new author parameter
  builtin-commit: use commit_tree()
  t7603: add new testcases to ensure builtin-commit uses reduce_heads()

Nanako Shiraishi (4):
  remote.c: make free_ref(), parse_push_refspec() and free_refspecs()
    static.
  graph.c: make many functions static
  usage.c: remove unused functions
  Add contrib/rerere-train script

Petr Baudis (1):
  git-web--browse: Support for using /bin/start on MinGW

Pieter de Bie (1):
  git wrapper: also use aliases to correct mistyped commands

Shawn O. Pearce (3):
  git-gui: Hide commit related UI during citool --nocommit
  git-gui: Use gitattribute "encoding" for file content display
  git-gui: Assume `blame --incremental` output is in UTF-8

Stephan Beyer (1):
  merge-recursive.c: Add more generic merge_recursive_generic()



-- 
Shawn.

^ permalink raw reply

* What's cooking in git/spearce.git (Sep 2008, #04; Mon, 22)
From: Shawn O. Pearce @ 2008-09-29 18:47 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed
with '-' are only in 'pu' while commits prefixed with '+' are
in 'next'.

The topics list the commits in reverse chronological order.  The topics
meant to be merged to the maintenance series have "maint-" in their names.

I'll be on vacation til Oct 08; proposal/review/discussion/improvement
cycle based on e-mails and the distributed nature of git mean that it
shouldn't keep the participants from further improving the system.  I've
asked Shawn to look after in-flight patches during the time, so hopefully
when I come back I'll see a much better git ;-).

----------------------------------------------------------------
[New Topics]

* nd/narrow (Sun Sep 14 20:07:59 2008 +0700) 9 commits
 - grep: skip files that have not been checked out
 - checkout_entry(): CE_NO_CHECKOUT on checked out entries.
 - Prevent diff machinery from examining worktree outside narrow
   checkout
 - Add tests for updating no-checkout entries in index
 - ls-files: add --narrow-checkout option to "will checkout" entries
 - update-index: add --checkout/--no-checkout to update
   CE_NO_CHECKOUT bit
 - update-index: refactor mark_valid() in preparation for new options
 - Introduce CE_NO_CHECKOUT bit
 - Extend index to save more flags

This is an early half of the earlier series (I haven't had chance to look
at the updated series yet), and should be replaced with the updated one
posted recently.

----------------------------------------------------------------
[Stalled -- Needs Action to Proceed (or to be dropped)]

* pb/submodule (Fri Sep 12 23:09:19 2008 +0200) 1 commit
 - t7400: Add short "git submodule add" testsuite

Waiting for a reroll.

* bd/blame (Thu Aug 21 18:22:01 2008 -0500) 5 commits
 - Use xdiff caching to improve git blame performance
 - Allow xdiff machinery to cache hash results for a file
 - Always initialize xpparam_t to 0
 - Bypass textual patch generation and parsing in git blame
 - Allow alternate "low-level" emit function from xdl_diff

Réne had good comments on how the callback should be structured.

* kb/am-directory (Fri Aug 29 15:27:50 2008 -0700) 1 commit
 - git-am: Pass the --directory option through to git-apply

I think this is still buggy and drops the option when am stops with
conflicts.

----------------------------------------------------------------
[Will be merged to 'master/maint' soon]

* mv/merge-recursive (Sat Sep 6 18:29:49 2008 +0200) 11 commits
 + builtin-merge: release the lockfile in try_merge_strategy()
 + merge-recursive: get rid of virtual_id
 + merge-recursive: move current_{file,directory}_set to struct
   merge_options
 + merge-recursive: move the global obuf to struct merge_options
 + merge-recursive: get rid of the index_only global variable
 + merge-recursive: move call_depth to struct merge_options
 + cherry-pick/revert: make direct internal call to merge_tree()
 + builtin-merge: avoid run_command_v_opt() for recursive and subtree
 + merge-recursive: introduce merge_options
 + merge-recursive.c: Add more generic merge_recursive_generic()
 + Split out merge_recursive() to merge-recursive.c

(Tip at 4271666)

* ho/dirstat-by-file (Fri Sep 5 22:27:35 2008 +0300) 1 commit
 + diff --dirstat-by-file: count changed files, not lines

(Tip at fd33777)

* jc/safe-c-l-d (Tue Sep 2 14:10:15 2008 -0700) 1 commit
 + safe_create_leading_directories(): make it about "leading"
   directories

(Tip at 5f0bdf5)

* jc/apply-include-exclude (Mon Aug 25 01:05:31 2008 -0700) 1 commit
 + git-apply:--include=pathspec

(Tip at 6ecb1ee)

* mv/commit-tree (Wed Sep 10 22:10:33 2008 +0200) 3 commits
 + t7603: add new testcases to ensure builtin-commit uses
   reduce_heads()
 + builtin-commit: use commit_tree()
 + commit_tree(): add a new author parameter

(Tip at 7a172b0)

* pb/autocorrect-wrapper (Wed Sep 10 17:54:28 2008 +0200) 1 commit
 + git wrapper: also use aliases to correct mistyped commands

(Tip at 746c221)

* jc/better-conflict-resolution (Thu Sep 4 23:48:48 2008 +0200) 15 commits
 + Fix AsciiDoc errors in merge documentation
 + git-merge documentation: describe how conflict is presented
 + checkout --conflict=<style>: recreate merge in a non-default style
 + checkout -m: recreate merge when checking out of unmerged index
 + Merge branch 'jc/maint-checkout-fix' into 'jc/better-conflict-
   resolution'
 + git-merge-recursive: learn to honor merge.conflictstyle
 + merge.conflictstyle: choose between "merge" and "diff3 -m" styles
 + rerere: understand "diff3 -m" style conflicts with the original
 + rerere.c: use symbolic constants to keep track of parsing states
 + xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or
   less
 + xmerge.c: minimum readability fixups
 + xdiff-merge: optionally show conflicts in "diff3 -m" style
 + xdl_fill_merge_buffer(): separate out a too deeply nested function
 + checkout --ours/--theirs: allow checking out one side of a
   conflicting merge
 + checkout -f: allow ignoring unmerged paths when checking out of
   the index

(Tip at 3407a7a)

* jc/alternate-push (Tue Sep 9 01:27:10 2008 -0700) 4 commits
 + push: receiver end advertises refs from alternate repositories
 + push: prepare sender to receive extended ref information from the
   receiver
 + receive-pack: make it a builtin
 + is_directory(): a generic helper function

(Tip at d79796b)

* bc/master-diff-hunk-header-fix (Sat Sep 20 18:36:22 2008 -0700) 10 commits
 + Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-
   hunk-header-fix
 + diff hunk pattern: fix misconverted "\{" tex macro introducers
 + diff: fix "multiple regexp" semantics to find hunk header comment
 + diff: use extended regexp to find hunk headers
 + Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-
   hunk-header-fix
 + diff: use extended regexp to find hunk headers
 + Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-
   hunk-header-fix
 + diff.*.xfuncname which uses "extended" regex's for hunk header
   selection
 + diff.c: associate a flag with each pattern and use it for
   compiling regex
 + diff.c: return pattern entry pointer rather than just the hunk
   header pattern

(Tip at 92bb978)

* am/status (Mon Sep 8 00:05:03 2008 +0200) 2 commits
 + wt-status: Teach how to discard changes in the working directory
 + wt-status: Split header generation into three functions

(Tip at 4d6e4c4)

I think the above are all ready for 'master'.

* mg/maint-remote-fix (Mon Sep 22 10:57:51 2008 +0200) 1 commit
 + make "git remote" report multiple URLs

(Tip at 7d20e21)

* bc/maint-diff-hunk-header-fix (Sat Sep 20 15:30:12 2008 -0700) 5 commits
 + diff hunk pattern: fix misconverted "\{" tex macro introducers
 + diff: use extended regexp to find hunk headers
 + diff.*.xfuncname which uses "extended" regex's for hunk header
   selection
 + diff.c: associate a flag with each pattern and use it for
   compiling regex
 + diff.c: return pattern entry pointer rather than just the hunk
   header pattern

(Tip at 96d1a8e)

The above two are ready for 'maint'.

----------------------------------------------------------------
[Actively Cooking]

* tr/workflow-doc (Sat Sep 13 18:11:01 2008 +0200) 2 commits
 + Documentation: Refer to git-rebase(1) to warn against rewriting
 + Documentation: new upstream rebase recovery section in git-rebase

My impression from the last round of discusson on the third patch in this
series (not queued here) was that as long as we do not present it as "One
True Workflow", the description was a good starting point, possibly others
to add other recommended flows later.

* pb/commit-where (Mon Sep 8 01:05:41 2008 +0200) 1 commit
 + builtin-commit.c: show on which branch a commit was added

Tentatively kicked back to "still cooking" status after Jeff voiced his
annoyance.  I personally do not like making this multi-line as Jeff
suggested as an alternative (the message already is too verbose to my
taste).

* lt/time-reject-fractional-seconds (Sat Aug 16 21:25:40 2008 -0700) 1 commit
 + date/time: do not get confused by fractional seconds

* jc/add-ita (Thu Aug 21 01:44:53 2008 -0700) 1 commit
 + git-add --intent-to-add (-N)

Teaches "git add" to record only the intent to add a path later.
I rerolled this without the fake empty blob object.

* jc/post-simplify (Fri Aug 15 01:34:51 2008 -0700) 2 commits
 - revision --simplify-merges: incremental simplification
 - revision --simplify-merges: prepare for incremental simplification

I started making this incremental but the progress is not so great.

----------------------------------------------------------------
[On Hold]

* jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits
 - git-am --forge: add Signed-off-by: line for the author
 - git-am: clean-up Signed-off-by: lines
 - stripspace: add --log-clean option to clean up signed-off-by:
   lines
 - stripspace: use parse_options()
 - Add "git am -s" test
 - git-am: refactor code to add signed-off-by line for the committer

The one at second from the tip needs reworking.

* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit
 - "git push": tellme-more protocol extension

* jc/merge-whitespace (Sun Feb 24 23:29:36 2008 -0800) 1 commit
 - WIP: start teaching the --whitespace=fix to merge machinery

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output

* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
 + merge: remove deprecated summary and diffstat options and config
   variables

This was previously in "will be in master soon" category, but it turns out
that the synonyms to the ones this one deletes are fairly new invention
that happend in 1.5.6 timeframe, and we cannot do this just yet.  Perhaps
in 1.7.0, but with the loud whining about moving git-foo out of $PATH we
have been hearing, it might not be a bad idea to drop this.

* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
 - diff: enable "too large a rename" warning when -M/-C is explicitly
   asked for

This would be the right thing to do for command line use, but gitk will be
hit due to tcl/tk's limitation, so I am holding this back for now.

-- 
Shawn.

^ permalink raw reply

* [PATCH] explicitly set LANG to 'C' in for guilt run-tests
From: Scott Moser @ 2008-09-29 18:51 UTC (permalink / raw)
  To: Josef "Jeff" Sipek; +Cc: git, Scott Moser

The output of guilt's run-tests is dependent on LANG due to reliance on a
given sorting algorithm. Currently, the test '052' will fail if LANG is
set to 'en_US.UTF-8' (and likely others values).

Remove the assumption by explicitly setting this in run-tests.

Signed-off-by: Scott Moser <smoser@brickies.net>
---
 regression/run-tests |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/regression/run-tests b/regression/run-tests
index 8f572eb..945150b 100755
--- a/regression/run-tests
+++ b/regression/run-tests
@@ -2,6 +2,7 @@
 
 export REG_DIR="$PWD"
 export PATH="$PWD/bin:$PATH"
+export LANG=C
 
 source scaffold
 
-- 
1.5.6.3

^ permalink raw reply related

* [PATCH] fix guilt-pop and push to fail if no relevant patches
From: Scott Moser @ 2008-09-29 18:51 UTC (permalink / raw)
  To: Josef "Jeff" Sipek; +Cc: git, Scott Moser

currently guilt-pop and guilt-push will exit with '0' if there are no more
relevant patches in the series (ie, if you've pushed or popped all of them)

This means that you cannot do something like:
  while guilt-push; do
    guilt refresh || break
  done

for reference, quilt does exit with non-zero in those cases:
  $ quilt push -a && quilt push
  File series fully applied, ends at patch my.patch
  $ echo $?
  1

  $ quilt pop -a; quilt pop
  No patch removed
  $ echo $?
  2

Signed-off-by: Scott Moser <smoser@brickies.net>
---
 guilt-pop            |    3 +--
 guilt-push           |   43 ++++++++++++++++++++++++-------------------
 regression/t-021.out |    3 +++
 3 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/guilt-pop b/guilt-pop
index db8473e..8a83fdb 100755
--- a/guilt-pop
+++ b/guilt-pop
@@ -45,8 +45,7 @@ patch="$1"
 [ ! -z "$all" ] && patch="-a"
 
 if [ ! -s "$applied" ]; then
-	disp "No patches applied."
-	exit 0
+	die "No patches applied."
 elif [ "$patch" = "-a" ]; then
 	# we are supposed to pop all patches
 
diff --git a/guilt-push b/guilt-push
index 018f9ac..48f886b 100755
--- a/guilt-push
+++ b/guilt-push
@@ -97,22 +97,27 @@ fi
 sidx=`wc -l < $applied`
 sidx=`expr $sidx + 1`
 
-get_series | sed -n -e "${sidx},${eidx}p" | while read p
-do
-	disp "Applying patch..$p"
-	if [ ! -f "$GUILT_DIR/$branch/$p" ]; then
-		die "Patch $p does not exist. Aborting."
-	fi
-
-	push_patch "$p" $abort_flag
-
-	# bail if necessary
-	if [ $? -eq 0 ]; then
-		disp "Patch applied."
-	elif [ -z "$abort_flag" ]; then
-		die "Patch applied with rejects. Fix it up, and refresh."
-	else
-		die "To force apply this patch, use 'guilt push -f'"
-	fi
-done
-
+get_series | sed -n -e "${sidx},${eidx}p" |
+	{
+	did_patch=0
+	while read p
+	do
+		disp "Applying patch..$p"
+		if [ ! -f "$GUILT_DIR/$branch/$p" ]; then
+			die "Patch $p does not exist. Aborting."
+		fi
+
+		push_patch "$p" $abort_flag
+
+		# bail if necessary
+		if [ $? -eq 0 ]; then
+			disp "Patch applied."
+		elif [ -z "$abort_flag" ]; then
+			die "Patch applied with rejects. Fix it up, and refresh."
+		else
+			die "To force apply this patch, use 'guilt push -f'"
+		fi
+		did_patch=1
+	done
+	[ $did_patch -ge 1 ] || die "no patches to apply"
+	}
diff --git a/regression/t-021.out b/regression/t-021.out
index cd8ae96..44771cb 100644
--- a/regression/t-021.out
+++ b/regression/t-021.out
@@ -822,6 +822,7 @@ index 0000000..8baef1b
 @@ -0,0 +1 @@
 +abc
 % guilt-push --all
+no patches to apply
 % guilt-pop -n -1
 Invalid number of patches to pop.
 % list_files
@@ -908,6 +909,7 @@ index 0000000..8baef1b
 @@ -0,0 +1 @@
 +abc
 % guilt-push --all
+no patches to apply
 % guilt-pop -n 0
 No patches requested to be removed.
 % list_files
@@ -994,6 +996,7 @@ index 0000000..8baef1b
 @@ -0,0 +1 @@
 +abc
 % guilt-push --all
+no patches to apply
 % guilt-pop -n 1
 Now at remove.
 % list_files
-- 
1.5.6.3

^ permalink raw reply related


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