Git development
 help / color / mirror / Atom feed
* [PATCHv2 3/5] Add git svn propget.
From: Benoit Sigoure @ 2007-10-16 14:36 UTC (permalink / raw)
  To: git; +Cc: normalperson, Benoit Sigoure
In-Reply-To: <1192545412-10929-2-git-send-email-tsuna@lrde.epita.fr>

	* git-svn.perl (%cmd): Add the new command `propget'.
	($cmd_dir_prefix): New global.
	(&get_svnprops): New helper.
	(&cmd_propget): New.  Use &get_svnprops.
	* t/t9101-git-svn-props.sh: Add a test case for propget.

Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
---
 git-svn.perl             |   54 ++++++++++++++++++++++++++++++++++++++++++++++
 t/t9101-git-svn-props.sh |   23 +++++++++++++++++++
 2 files changed, 77 insertions(+), 0 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index 4d643d7..40be2c4 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -9,6 +9,8 @@ use vars qw/	$AUTHOR $VERSION
 $AUTHOR = 'Eric Wong <normalperson@yhbt.net>';
 $VERSION = '@@GIT_VERSION@@';
 
+# From which subdir have we been invoked?
+my $cmd_dir_prefix = command_oneline(qw/rev-parse --show-prefix/) || '';
 my $git_dir_user_set = 1 if defined $ENV{GIT_DIR};
 $ENV{GIT_DIR} ||= '.git';
 $Git::SVN::default_repo_id = 'svn';
@@ -127,6 +129,9 @@ my %cmd = (
 			     'Create a .gitignore per svn:ignore',
 			     { 'revision|r=i' => \$_revision
 			     } ],
+        'propget' => [ \&cmd_propget,
+		       'Print the value of a property on a file or directory',
+		       { 'revision|r=i' => \$_revision } ],
 	'show-ignore' => [ \&cmd_show_ignore, "Show svn:ignore listings",
 			{ 'revision|r=i' => \$_revision
 			} ],
@@ -526,6 +531,55 @@ sub cmd_create_ignore {
 	});
 }
 
+# get_svnprops(PATH)
+# ------------------
+# Helper for cmd_propget below.
+sub get_svnprops {
+	my $path = shift;
+	my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
+	$gs ||= Git::SVN->new;
+
+	# prefix THE PATH by the sub-directory from which the user
+	# invoked us.
+	$path = $cmd_dir_prefix . $path;
+	fatal("No such file or directory: $path\n") unless -e $path;
+	my $is_dir = -d $path ? 1 : 0;
+	$path = $gs->{path} . '/' . $path;
+
+	# canonicalize the path (otherwise libsvn will abort or fail to
+	# find the file)
+	# File::Spec->canonpath doesn't collapse x/../y into y (for a
+	# good reason), so let's do this manually.
+	$path =~ s#/+#/#g;
+	$path =~ s#/\.(?:/|$)#/#g;
+	$path =~ s#/[^/]+/\.\.##g;
+	$path =~ s#/$##g;
+
+	my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
+	my $props;
+	if ($is_dir) {
+		(undef, undef, $props) = $gs->ra->get_dir($path, $r);
+	}
+	else {
+		(undef, $props) = $gs->ra->get_file($path, $r, undef);
+	}
+	return $props;
+}
+
+# cmd_propget (PROP, PATH)
+# ------------------------
+# Print the SVN property PROP for PATH.
+sub cmd_propget {
+	my ($prop, $path) = @_;
+	$path = '.' if not defined $path;
+	usage(1) if not defined $prop;
+	my $props = get_svnprops($path);
+	if (not defined $props->{$prop}) {
+		fatal("`$path' does not have a `$prop' SVN property.\n");
+	}
+	print $props->{$prop} . "\n";
+}
+
 sub cmd_multi_init {
 	my $url = shift;
 	unless (defined $_trunk || defined $_branches || defined $_tags) {
diff --git a/t/t9101-git-svn-props.sh b/t/t9101-git-svn-props.sh
index 796d80e..61c8799 100755
--- a/t/t9101-git-svn-props.sh
+++ b/t/t9101-git-svn-props.sh
@@ -170,4 +170,27 @@ test_expect_success 'test create-ignore' "
 	git ls-files -s | grep gitignore | cmp - create-ignore-index.expect
 	"
 
+cat >prop.expect <<\EOF
+no-such-file*
+
+EOF
+cat >prop2.expect <<\EOF
+8
+EOF
+
+# This test can be improved: since all the svn:ignore contain the same
+# pattern, it can pass even though the propget did not execute on the
+# right directory.
+test_expect_success 'test propget' "
+	git-svn propget svn:ignore . | cmp - prop.expect &&
+	cd deeply &&
+	git-svn propget svn:ignore . | cmp - ../prop.expect &&
+	git-svn propget svn:entry:committed-rev nested/directory/.keep \
+	  | cmp - ../prop2.expect &&
+	git-svn propget svn:ignore .. | cmp - ../prop.expect &&
+	git-svn propget svn:ignore nested/ | cmp - ../prop.expect &&
+	git-svn propget svn:ignore ./nested | cmp - ../prop.expect &&
+	git-svn propget svn:ignore .././deeply/nested | cmp - ../prop.expect
+	"
+
 test_done
-- 
1.5.3.4.214.g6f43

^ permalink raw reply related

* [PATCHv2 1/5] Add a generic tree traversal to fetch SVN properties.
From: Benoit Sigoure @ 2007-10-16 14:36 UTC (permalink / raw)
  To: git; +Cc: normalperson, Benoit Sigoure

	* git-svn.perl (&traverse_ignore): Remove.
	(&prop_walk): New.
	(&cmd_show_ignore): Use prop_walk.

Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
---
 git-svn.perl |   65 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index 777e436..95393b6 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -488,7 +488,15 @@ sub cmd_show_ignore {
 	my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
 	$gs ||= Git::SVN->new;
 	my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
-	$gs->traverse_ignore(\*STDOUT, $gs->{path}, $r);
+	$gs->prop_walk($gs->{path}, $r, sub {
+		my ($gs, $path, $props) = @_;
+		print STDOUT "\n# $path\n";
+		my $s = $props->{'svn:ignore'} or return;
+		$s =~ s/[\r\n]+/\n/g;
+		chomp $s;
+		$s =~ s#^#$path#gm;
+		print STDOUT "$s\n";
+	});
 }
 
 sub cmd_multi_init {
@@ -1480,28 +1488,45 @@ sub rel_path {
 	$url;
 }
 
-sub traverse_ignore {
-	my ($self, $fh, $path, $r) = @_;
-	$path =~ s#^/+##g;
-	my $ra = $self->ra;
-	my ($dirent, undef, $props) = $ra->get_dir($path, $r);
+# prop_walk(PATH, REV, SUB)
+# -------------------------
+# Recursively traverse PATH at revision REV and invoke SUB for each
+# directory that contains a SVN property.  SUB will be invoked as
+# follows:  &SUB(gs, path, props);  where `gs' is this instance of
+# Git::SVN, `path' the path to the directory where the properties
+# `props' were found.  The `path' will be relative to point of checkout,
+# that is, if url://repo/trunk is the current Git branch, and that
+# directory contains a sub-directory `d', SUB will be invoked with `/d/'
+# as `path' (note the trailing `/').
+sub prop_walk {
+	my ($self, $path, $rev, $sub) = @_;
+
+	my ($dirent, undef, $props) = $self->ra->get_dir($path, $rev);
+	$path =~ s#^/*#/#g;
 	my $p = $path;
-	$p =~ s#^\Q$self->{path}\E(/|$)##;
-	print $fh length $p ? "\n# $p\n" : "\n# /\n";
-	if (my $s = $props->{'svn:ignore'}) {
-		$s =~ s/[\r\n]+/\n/g;
-		chomp $s;
-		if (length $p == 0) {
-			$s =~ s#\n#\n/$p#g;
-			print $fh "/$s\n";
-		} else {
-			$s =~ s#\n#\n/$p/#g;
-			print $fh "/$p/$s\n";
-		}
-	}
+	# Strip the irrelevant part of the path.
+	$p =~ s#^/+\Q$self->{path}\E(/|$)#/#;
+	# Ensure the path is terminated by a `/'.
+	$p =~ s#/*$#/#;
+
+	# The properties contain all the internal SVN stuff nobody
+	# (usually) cares about.
+	my $interesting_props = 0;
+	foreach (keys %{$props}) {
+		# If it doesn't start with `svn:', it must be a
+		# user-defined property.
+		++$interesting_props and next if $_ !~ /^svn:/;
+		# FIXME: Fragile, if SVN adds new public properties,
+		# this needs to be updated.
+		++$interesting_props if /^svn:(?:ignore|keywords|executable
+		                                 |eol-style|mime-type
+						 |externals|needs-lock)$/x;
+	}
+	&$sub($self, $p, $props) if $interesting_props;
+
 	foreach (sort keys %$dirent) {
 		next if $dirent->{$_}->{kind} != $SVN::Node::dir;
-		$self->traverse_ignore($fh, "$path/$_", $r);
+		$self->prop_walk($path . '/' . $_, $rev, $sub);
 	}
 }
 
-- 
1.5.3.4.214.g6f43

^ permalink raw reply related

* [PATCHv2 4/5] Add git svn proplist.
From: Benoit Sigoure @ 2007-10-16 14:36 UTC (permalink / raw)
  To: git; +Cc: normalperson, Benoit Sigoure
In-Reply-To: <1192545412-10929-3-git-send-email-tsuna@lrde.epita.fr>

	* git-svn.perl (%cmd): Add the command `proplist'.
	(&cmd_proplist): New.
	* t/t9101-git-svn-props.sh: Test git svn proplist.

Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
---
 git-svn.perl             |   18 +++++++++++++++++-
 t/t9101-git-svn-props.sh |   21 +++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index 40be2c4..8efe949 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -132,6 +132,9 @@ my %cmd = (
         'propget' => [ \&cmd_propget,
 		       'Print the value of a property on a file or directory',
 		       { 'revision|r=i' => \$_revision } ],
+        'proplist' => [ \&cmd_proplist,
+		       'List all properties of a file or directory',
+		       { 'revision|r=i' => \$_revision } ],
 	'show-ignore' => [ \&cmd_show_ignore, "Show svn:ignore listings",
 			{ 'revision|r=i' => \$_revision
 			} ],
@@ -533,7 +536,7 @@ sub cmd_create_ignore {
 
 # get_svnprops(PATH)
 # ------------------
-# Helper for cmd_propget below.
+# Helper for cmd_propget and cmd_proplist below.
 sub get_svnprops {
 	my $path = shift;
 	my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
@@ -580,6 +583,19 @@ sub cmd_propget {
 	print $props->{$prop} . "\n";
 }
 
+# cmd_proplist (PATH)
+# -------------------
+# Print the list of SVN properties for PATH.
+sub cmd_proplist {
+	my $path = shift;
+	$path = '.' if not defined $path;
+	my $props = get_svnprops($path);
+	print "Properties on '$path':\n";
+	foreach (sort keys %{$props}) {
+		print "  $_\n";
+	}
+}
+
 sub cmd_multi_init {
 	my $url = shift;
 	unless (defined $_trunk || defined $_branches || defined $_tags) {
diff --git a/t/t9101-git-svn-props.sh b/t/t9101-git-svn-props.sh
index 61c8799..3c83127 100755
--- a/t/t9101-git-svn-props.sh
+++ b/t/t9101-git-svn-props.sh
@@ -193,4 +193,25 @@ test_expect_success 'test propget' "
 	git-svn propget svn:ignore .././deeply/nested | cmp - ../prop.expect
 	"
 
+cat >prop.expect <<\EOF
+Properties on '.':
+  svn:entry:committed-date
+  svn:entry:committed-rev
+  svn:entry:last-author
+  svn:entry:uuid
+  svn:ignore
+EOF
+cat >prop2.expect <<\EOF
+Properties on 'nested/directory/.keep':
+  svn:entry:committed-date
+  svn:entry:committed-rev
+  svn:entry:last-author
+  svn:entry:uuid
+EOF
+
+test_expect_success 'test proplist' "
+	git-svn proplist . | cmp - prop.expect &&
+	git-svn proplist nested/directory/.keep | cmp - prop2.expect
+	"
+
 test_done
-- 
1.5.3.4.214.g6f43

^ permalink raw reply related

* [PATCHv2 5/5] Simplify the handling of fatal errors.
From: Benoit Sigoure @ 2007-10-16 14:36 UTC (permalink / raw)
  To: git; +Cc: normalperson, Benoit Sigoure
In-Reply-To: <1192545412-10929-4-git-send-email-tsuna@lrde.epita.fr>

	* git-svn.perl (&fatal): Append the newline at the end of the error
	message.
	Adjust all callers.

Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
---
 git-svn.perl |   42 +++++++++++++++++++++---------------------
 1 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index 8efe949..656493a 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -21,12 +21,12 @@ $Git::SVN::Log::TZ = $ENV{TZ};
 $ENV{TZ} = 'UTC';
 $| = 1; # unbuffer STDOUT
 
-sub fatal (@) { print STDERR @_; exit 1 }
+sub fatal (@) { print STDERR "@_\n"; exit 1 }
 require SVN::Core; # use()-ing this causes segfaults for me... *shrug*
 require SVN::Ra;
 require SVN::Delta;
 if ($SVN::Core::VERSION lt '1.1.0') {
-	fatal "Need SVN::Core 1.1.0 or better (got $SVN::Core::VERSION)\n";
+	fatal "Need SVN::Core 1.1.0 or better (got $SVN::Core::VERSION)";
 }
 push @Git::SVN::Ra::ISA, 'SVN::Ra';
 push @SVN::Git::Editor::ISA, 'SVN::Delta::Editor';
@@ -369,7 +369,7 @@ sub cmd_set_tree {
 		} elsif (scalar @tmp > 1) {
 			push @revs, reverse(command('rev-list',@tmp));
 		} else {
-			fatal "Failed to rev-parse $c\n";
+			fatal "Failed to rev-parse $c";
 		}
 	}
 	my $gs = Git::SVN->new;
@@ -379,7 +379,7 @@ sub cmd_set_tree {
 		fatal "There are new revisions that were fetched ",
 		      "and need to be merged (or acknowledged) ",
 		      "before committing.\nlast rev: $r_last\n",
-		      " current: $gs->{last_rev}\n";
+		      " current: $gs->{last_rev}";
 	}
 	$gs->set_tree($_) foreach @revs;
 	print "Done committing ",scalar @revs," revisions to SVN\n";
@@ -408,7 +408,7 @@ sub cmd_dcommit {
 			(undef, $last_rev, undef) = cmt_metadata("$d~1");
 			unless (defined $last_rev) {
 				fatal "Unable to extract revision information ",
-				      "from commit $d~1\n";
+				      "from commit $d~1";
 			}
 		}
 		if ($_dry_run) {
@@ -521,7 +521,7 @@ sub cmd_create_ignore {
 		my $ignore = '.' . $path . '.gitignore';
 		my $s = $props->{'svn:ignore'} or return;
 		open(GITIGNORE, '>', $ignore)
-		  or fatal("Failed to open `$ignore' for writing: $!\n");
+		  or fatal("Failed to open `$ignore' for writing: $!");
 		$s =~ s/[\r\n]+/\n/g;
 		chomp $s;
 		# Prefix all patterns so that the ignore doesn't apply
@@ -529,7 +529,7 @@ sub cmd_create_ignore {
 		$s =~ s#^#/#gm;
 		print GITIGNORE "$s\n";
 		close(GITIGNORE)
-		  or fatal("Failed to close `$ignore': $!\n");
+		  or fatal("Failed to close `$ignore': $!");
 		command_noisy('add', $ignore);
 	});
 }
@@ -545,7 +545,7 @@ sub get_svnprops {
 	# prefix THE PATH by the sub-directory from which the user
 	# invoked us.
 	$path = $cmd_dir_prefix . $path;
-	fatal("No such file or directory: $path\n") unless -e $path;
+	fatal("No such file or directory: $path") unless -e $path;
 	my $is_dir = -d $path ? 1 : 0;
 	$path = $gs->{path} . '/' . $path;
 
@@ -578,7 +578,7 @@ sub cmd_propget {
 	usage(1) if not defined $prop;
 	my $props = get_svnprops($path);
 	if (not defined $props->{$prop}) {
-		fatal("`$path' does not have a `$prop' SVN property.\n");
+		fatal("`$path' does not have a `$prop' SVN property.");
 	}
 	print $props->{$prop} . "\n";
 }
@@ -642,7 +642,7 @@ sub cmd_multi_fetch {
 sub cmd_commit_diff {
 	my ($ta, $tb, $url) = @_;
 	my $usage = "Usage: $0 commit-diff -r<revision> ".
-	            "<tree-ish> <tree-ish> [<URL>]\n";
+	            "<tree-ish> <tree-ish> [<URL>]";
 	fatal($usage) if (!defined $ta || !defined $tb);
 	my $svn_path;
 	if (!defined $url) {
@@ -660,7 +660,7 @@ sub cmd_commit_diff {
 	if (defined $_message && defined $_file) {
 		fatal("Both --message/-m and --file/-F specified ",
 		      "for the commit message.\n",
-		      "I have no idea what you mean\n");
+		      "I have no idea what you mean");
 	}
 	if (defined $_file) {
 		$_message = file_to_s($_file);
@@ -723,7 +723,7 @@ sub complete_svn_url {
 	if ($path !~ m#^[a-z\+]+://#) {
 		if (!defined $url || $url !~ m#^[a-z\+]+://#) {
 			fatal("E: '$path' is not a complete URL ",
-			      "and a separate URL is not specified\n");
+			      "and a separate URL is not specified");
 		}
 		return ($url, $path);
 	}
@@ -744,7 +744,7 @@ sub complete_url_ls_init {
 		$repo_path =~ s#^/+##;
 		unless ($ra) {
 			fatal("E: '$repo_path' is not a complete URL ",
-			      "and a separate URL is not specified\n");
+			      "and a separate URL is not specified");
 		}
 	}
 	my $url = $ra->{url};
@@ -1750,7 +1750,7 @@ sub assert_index_clean {
 		$x = command_oneline('write-tree');
 		if ($y ne $x) {
 			::fatal "trees ($treeish) $y != $x\n",
-			        "Something is seriously wrong...\n";
+			        "Something is seriously wrong...";
 		}
 	});
 }
@@ -2176,7 +2176,7 @@ sub set_tree {
 	my ($self, $tree) = (shift, shift);
 	my $log_entry = ::get_commit_entry($tree);
 	unless ($self->{last_rev}) {
-		fatal("Must have an existing revision to commit\n");
+		fatal("Must have an existing revision to commit");
 	}
 	my %ed_opts = ( r => $self->{last_rev},
 	                log => $log_entry->{log},
@@ -3126,7 +3126,7 @@ sub apply_diff {
 		if (defined $o{$f}) {
 			$self->$f($m);
 		} else {
-			fatal("Invalid change type: $f\n");
+			fatal("Invalid change type: $f");
 		}
 	}
 	$self->rmdirs if $_rmdir;
@@ -3734,15 +3734,15 @@ sub config_pager {
 sub run_pager {
 	return unless -t *STDOUT && defined $pager;
 	pipe my $rfd, my $wfd or return;
-	defined(my $pid = fork) or ::fatal "Can't fork: $!\n";
+	defined(my $pid = fork) or ::fatal "Can't fork: $!";
 	if (!$pid) {
 		open STDOUT, '>&', $wfd or
-		                     ::fatal "Can't redirect to stdout: $!\n";
+		                     ::fatal "Can't redirect to stdout: $!";
 		return;
 	}
-	open STDIN, '<&', $rfd or ::fatal "Can't redirect stdin: $!\n";
+	open STDIN, '<&', $rfd or ::fatal "Can't redirect stdin: $!";
 	$ENV{LESS} ||= 'FRSX';
-	exec $pager or ::fatal "Can't run pager: $! ($pager)\n";
+	exec $pager or ::fatal "Can't run pager: $! ($pager)";
 }
 
 sub tz_to_s_offset {
@@ -3878,7 +3878,7 @@ sub cmd_show_log {
 			$r_min = $r_max = $::_revision;
 		} else {
 			::fatal "-r$::_revision is not supported, use ",
-				"standard \'git log\' arguments instead\n";
+				"standard 'git log' arguments instead";
 		}
 	}
 
-- 
1.5.3.4.214.g6f43

^ permalink raw reply related

* Re: should git command and git-command be equivalent?
From: Matthieu Moy @ 2007-10-16 14:46 UTC (permalink / raw)
  To: David Symonds; +Cc: franky, git
In-Reply-To: <ee77f5c20710160528k520704d7pd3cf99dea1f83a77@mail.gmail.com>

"David Symonds" <dsymonds@gmail.com> writes:

> If you use the contrib/completion/git-completion.bash script, you can
> type "git st<TAB>", and it'll complete it for you. Well, it did, until
> git-stash came along and ruined it...
>
> At any rate, the bash completion also completes things like branch
> names, which can be immensely helpful.

I don't use bash, but the zsh completion for git is also excellent.

But "git st" is still one less key to type than "git st<tab>" ;-).

-- 
Matthieu

^ permalink raw reply

* Re: [PATCHv2 1/5] Add a generic tree traversal to fetch SVN properties.
From: Johannes Sixt @ 2007-10-16 14:53 UTC (permalink / raw)
  To: Benoit Sigoure; +Cc: git, normalperson
In-Reply-To: <1192545412-10929-1-git-send-email-tsuna@lrde.epita.fr>

Benoit Sigoure schrieb:
> 	* git-svn.perl (&traverse_ignore): Remove.
> 	(&prop_walk): New.
> 	(&cmd_show_ignore): Use prop_walk.

This may be your favorite style of commit messaged, but I think the 
concensus for git is a different style of commit message: We would like to 
see *why* this change is good. But you only note *what* was changed, 
something that can be seen by looking at the patch anyway.

The commit message should be helpful when the commit is looked at in 
isolation, like when you are doing some code archeology half a year later 
and e.g. git-blame/git-bisect points you to this commit.

Also a notice such as

  "With this we will be able to lift properties like svn:ignore into
   .gitignore in a follow-up change."

tells that this was actually part of a series and you don't have to remember 
that half a year ago there were 4 more patches submitted in the same second 
with this one.

-- Hannes

^ permalink raw reply

* Re: Switching from CVS to GIT
From: Eli Zaretskii @ 2007-10-16 15:02 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: barkalow, raa.lkml, ae, tsuna, git
In-Reply-To: <Pine.LNX.4.64.0710161422110.25221@racer.site>

> Date: Tue, 16 Oct 2007 14:24:34 +0100 (BST)
> From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> cc: barkalow@iabervon.org, raa.lkml@gmail.com, ae@op5.se, tsuna@lrde.epita.fr, 
>     git@vger.kernel.org
> 
> Funny.  Last time I checked the toolbar went away, as well as the desktop, 
> when I killed explorer.exe.

That's a ``feature'': Explorer is the parent of all the desktop
display.  Kinda like the login shell on Unix: if you kill it, there
goes your whole session.  Except that on Windows, the OS pays
attention and restarts Explorer right away to get you back in
business.  (In first versions of Windows, there was no restarting of
Explorer, so if you killed it, you needed to reboot :-()

^ permalink raw reply

* Re: [PATCHv2 1/5] Add a generic tree traversal to fetch SVN properties.
From: Benoit SIGOURE @ 2007-10-16 15:10 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: git list
In-Reply-To: <4714D068.8090606@viscovery.net>

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

On Oct 16, 2007, at 4:53 PM, Johannes Sixt wrote:

> Benoit Sigoure schrieb:
>> 	* git-svn.perl (&traverse_ignore): Remove.
>> 	(&prop_walk): New.
>> 	(&cmd_show_ignore): Use prop_walk.
>
> This may be your favorite style of commit messaged, but I think the  
> concensus for git is a different style of commit message: We would  
> like to see *why* this change is good. But you only note *what* was  
> changed, something that can be seen by looking at the patch anyway.
>
> The commit message should be helpful when the commit is looked at  
> in isolation, like when you are doing some code archeology half a  
> year later and e.g. git-blame/git-bisect points you to this commit.
>
> Also a notice such as
>
>  "With this we will be able to lift properties like svn:ignore into
>   .gitignore in a follow-up change."
>
> tells that this was actually part of a series and you don't have to  
> remember that half a year ago there were 4 more patches submitted  
> in the same second with this one.

Indeed, sorry, I'll write more explanatory commit messages next time :)

-- 
Benoit Sigoure aka Tsuna
EPITA Research and Development Laboratory



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

^ permalink raw reply

* Re: Switching from CVS to GIT
From: Eli Zaretskii @ 2007-10-16 15:12 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: prohaska, git, robin.rosenberg.lists, barkalow, raa.lkml, tsuna,
	ae
In-Reply-To: <Pine.LNX.4.64.0710161512450.25221@racer.site>

> Date: Tue, 16 Oct 2007 15:14:19 +0100 (BST)
> From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> cc: Git Mailing List <git@vger.kernel.org>, 
>     Robin Rosenberg <robin.rosenberg.lists@dewire.com>, 
>     Eli Zaretskii <eliz@gnu.org>, Daniel Barkalow <barkalow@iabervon.org>, 
>     Alex Riesen <raa.lkml@gmail.com>, tsuna@lrde.epita.fr, 
>     Andreas Ericsson <ae@op5.se>
> 
> So I think this will always be something Windows users would wish to 
> impose onto others, while Linux users would always refuse.

Here is one Windows user that will never try to impose that ;-)

However, it's possible that an option could be supported to do that
when the user particularly wants that in her database.  Just a
thought...

^ permalink raw reply

* Re: Switching from CVS to GIT
From: Johannes Schindelin @ 2007-10-16 15:16 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: Shawn O. Pearce, git list
In-Reply-To: <471455ED.8070408@viscovery.net>

Hi,

On Tue, 16 Oct 2007, Johannes Sixt wrote:

> Shawn O. Pearce schrieb:
> > Johannes Sixt <j.sixt@viscovery.net> wrote:
> > > Unfortunately, "Fetch" does not yet work[*] from within git-gui, so you
> > > have to fall back to git-fetch on the command line.
> > > 
> > > [*] Note the distinction between "not available" and "does not work".
> > 
> > What's broken?  Is this that Git protocol dump showing up in
> > git-gui's console window thing?
> > 
> > Are you using the C based fetch that is in git.git's next branch,
> > or the shell script based one that is in master?  Which Tcl/Tk
> > version are you using to run git-gui?
> 
> It's the scripted fetch that does not work. The symptom is that the output of
> at least one of the commands (upload-pack, I think, because what I see is
> wire protocol) goes to a newly spawned console instead of wherever it was
> redirected to.
> 
> I didn't bother reporting since builtin-fetch is on the way (which will
> hopefully make this a moot point) and our team here is comfortable with
> calling git fetch on the command line.

Note that Issue 57 on msysgit.googlecode.com talks exactly about the same 
issue.

Ciao,
Dscho

^ permalink raw reply

* Re: Switching from CVS to GIT
From: Johannes Schindelin @ 2007-10-16 15:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: barkalow, raa.lkml, ae, tsuna, git
In-Reply-To: <E1Ihnvq-0002Xr-F9@fencepost.gnu.org>

Hi,

On Tue, 16 Oct 2007, Eli Zaretskii wrote:

> > Date: Tue, 16 Oct 2007 14:24:34 +0100 (BST)
> > From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> > cc: barkalow@iabervon.org, raa.lkml@gmail.com, ae@op5.se, tsuna@lrde.epita.fr, 
> >     git@vger.kernel.org
> > 
> > Funny.  Last time I checked the toolbar went away, as well as the desktop, 
> > when I killed explorer.exe.
> 
> That's a ``feature'': Explorer is the parent of all the desktop
> display.  Kinda like the login shell on Unix: if you kill it, there
> goes your whole session.  Except that on Windows, the OS pays
> attention and restarts Explorer right away to get you back in
> business.  (In first versions of Windows, there was no restarting of
> Explorer, so if you killed it, you needed to reboot :-()

I kinda knew that.  But what's now with your recommendation to never run 
Explorer?

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 3/3] git-cvsexportcommit.perl: git-apply no longer needs --binary
From: Michael Witten @ 2007-10-16 15:27 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git
In-Reply-To: <Pine.LNX.4.64.0710161404220.25221@racer.site>


On 16 Oct 2007, at 9:04:34 AM, Johannes Schindelin wrote:

> Hi,
>
> does --binary hurt?

It's a no op according to the documentation.

In my experience, the healthier the trees are,
the healthier the forest is.

Michael Witten

^ permalink raw reply

* Re: [PATCH 09/25] Port builtin-add.c to use the new option parser.
From: Michael Witten @ 2007-10-16 15:36 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Pierre Habouzit, git
In-Reply-To: <Pine.LNX.4.64.0710161417150.25221@racer.site>


On 16 Oct 2007, at 9:17:29 AM, Johannes Schindelin wrote:

> Hi,
>
> On Tue, 16 Oct 2007, Michael Witten wrote:
>
>> On 16 Oct 2007, at 4:39:42 AM, Pierre Habouzit wrote:
>>
>>> +	OPT_BOOLEAN('u', NULL, &take_worktree_changes, "update only files
>>> that git already knows about"),
>>
>> "update only files that git already knows about in the current  
>> directory"
>
> "update tracked files"

"update tracked files in ."

;-)


Consider the description for git-commit's -a:

> Tell the command to automatically stage files that have been
> modified and deleted, but new files you have not told git about
> are not affected.

However, that's not what -u does.

^ permalink raw reply

* Some git mv questions
From: Jan Wielemaker @ 2007-10-16 15:33 UTC (permalink / raw)
  To: git list

Hi,

For the impatient, start [HERE].

I'm about to start shuffling files and directories around in a big project,
while others keep working on their files.  This is a bit scary as I
still feel pretty much newbie in the GIT world :-)  

I did a little test as follows.  Given a shared repository sandbox.git
with a file in there I did the following, which worked fine.

	* [player one] clone the DB, edit the file, commit and push
	* [player two] clone the DB
		- git branch shuffle
		- git checkout shuffle
		- mkdir SomeDir
		- git mv file SomeDir
		- edit SomeDir/file
		- git commit -a
	* Sofar so good, now merge:
		- git checkout master
		- git pull (get player 1 changes)
		- git merge shuffle
		- git branch -d shuffle
		- git commit -a
		- git push

Sofar so good, but during the tests I had two times problems:

	* Instead of "git mv file SomeDir" I simply used "mv file SomeDir"
	and git-add.  Now I end up with two files and of course the changes
	are not merged.  I can understand that.

[HERE]
	* On a somewhat bigger test I moved a large directory using
	"git mv dir newdir" (where newdir is an existing directory).
	Now "git status" gives a lot of new and deleted files!?  I
	guess I'm going to have a big mess if that happens in the
	real project.  Moving some smaller test directories simply
	showed a series of renames.

	Can this be explained?  Is this a bug?

	Thanks --- Jan

^ permalink raw reply

* Re: Switching from CVS to GIT
From: Eli Zaretskii @ 2007-10-16 15:43 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: barkalow, raa.lkml, ae, tsuna, git
In-Reply-To: <Pine.LNX.4.64.0710161617490.25221@racer.site>

> Date: Tue, 16 Oct 2007 16:18:10 +0100 (BST)
> From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> cc: barkalow@iabervon.org, raa.lkml@gmail.com, ae@op5.se, tsuna@lrde.epita.fr, 
>     git@vger.kernel.org
> 
> > That's a ``feature'': Explorer is the parent of all the desktop
> > display.  Kinda like the login shell on Unix: if you kill it, there
> > goes your whole session.  Except that on Windows, the OS pays
> > attention and restarts Explorer right away to get you back in
> > business.  (In first versions of Windows, there was no restarting of
> > Explorer, so if you killed it, you needed to reboot :-()
> 
> I kinda knew that.  But what's now with your recommendation to never run 
> Explorer?

I meant not to open "My Computer" and use the GUI for browsing the
directories.  If you meant that the touching of files is done even if
you don't open the GUI, then just ignore my advice: Explorer cannot be
killed.  I'm surprised that it touches files and directories,
though...

^ permalink raw reply

* RE: Problem with git-svnimport
From: VAUCHER Laurent @ 2007-10-16 15:48 UTC (permalink / raw)
  To: git

In fact, I think the problem appears not with undescore characters but spaces in tag and branche names.

Do you think there's a way around this (other than manually renaming tags and branches in the SVN repository)?

Laurent.

-----Message d'origine-----
De : git-owner@vger.kernel.org [mailto:git-owner@vger.kernel.org] De la part de VAUCHER Laurent
Envoyé : 16 October 2007 14:31
À : git@vger.kernel.org
Objet : !! SPAM Suspect : SPAM-URL-DBL !! Problem with git-svnimport

  Hi.

  Trying to convert a svn repository to git, I encountered the following
error:

Use of uninitialized value in hash element at /usr/bin/git-svnimport
line 534.

  Line 534 reads:
	my $gitrev = $branches{$srcbranch}{$therev};

  I have installed packages git-core and git-svn on Ubuntu. These
package have versions: "1:1.5.2.5-2-feisty1"

  The tool seems to choke on tags or branches with special characters
(underscore, for instance).


Laurent.

^ permalink raw reply

* RE: Switching from CVS to GIT
From: Dave Korn @ 2007-10-16 15:47 UTC (permalink / raw)
  To: 'Eli Zaretskii', 'Andreas Ericsson'
  Cc: git, barkalow, raa.lkml, make-w32, Johannes.Schindelin
In-Reply-To: <E1Ihfrl-0007w1-3I@fencepost.gnu.org>

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

On 16 October 2007 07:25, Eli Zaretskii wrote:

> On the other hand, what packages have 100K files?  If there's only one
> -- the Linux kernel -- then I think this kind of performance is for
> all practical purposes unimportant on Windows, because while it is
> reasonable to assume that someone would like to use git on Windows,
> assuming that someone will develop the Linux kernel on Windows is --
> how should I put it -- _really_ far-fetched ;-)

  Hi there!  Did someone call?

  Cross-development in general isn't what I'd call "far-fetched", and there's
no law of cross-development that says the host has to be the same platform as
the target.  :-)[*]

    cheers,
      DaveK

[*] - this smiley sponsored by the Department of the Bleedin' Obvious.
-- 
Can't think of a witty .sigline today....

[-- Attachment #2: developed-on-windows.diff --]
[-- Type: application/octet-stream, Size: 3660 bytes --]

Index: firmware_class.c
===================================================================
RCS file: /sources/repository/external_source/linux/linux-2.6.12.2/drivers/base/firmware_class.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -p -u -r1.1 -r1.2
--- firmware_class.c	17 Jan 2006 16:49:35 -0000	1.1
+++ firmware_class.c	15 Feb 2006 14:01:29 -0000	1.2
@@ -31,6 +31,7 @@ enum {
 };
 
 static int loading_timeout = 10;	/* In seconds */
+static char grow_faster = 1;      /* Boolean */
 
 /* fw_lock could be moved to 'struct firmware_priv' but since it is just
  * guarding for corner cases a global lock should be OK */
@@ -79,6 +80,28 @@ firmware_timeout_store(struct class *cla
 
 static CLASS_ATTR(timeout, 0644, firmware_timeout_show, firmware_timeout_store);
 
+static ssize_t
+firmware_grow_faster_show(struct class *class, char *buf)
+{
+	return sprintf(buf, "%d\n", grow_faster);
+}
+
+/**
+ * firmware_grow_faster_store:
+ * Description:
+ *	Sets or clears a flag that causes the reallocate routine to
+ *	grow the firmware buffer size more or less quickly.
+ *  
+ **/
+static ssize_t
+firmware_grow_faster_store(struct class *class, const char *buf, size_t count)
+{
+	grow_faster = simple_strtol(buf, NULL, 10) != 0;
+	return count;
+}
+
+static CLASS_ATTR(grow_faster, 0644, firmware_grow_faster_show, firmware_grow_faster_store);
+
 static void  fw_class_dev_release(struct class_device *class_dev);
 int firmware_class_hotplug(struct class_device *dev, char **envp,
 			   int num_envp, char *buffer, int buffer_size);
@@ -198,18 +221,27 @@ static int
 fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
 {
 	u8 *new_data;
+  int new_size;
 
 	if (min_size <= fw_priv->alloc_size)
 		return 0;
 
-	new_data = vmalloc(fw_priv->alloc_size + PAGE_SIZE);
+#define ONE_MEG (1024 * 1024)
+
+  new_size = grow_faster 
+    ? ((fw_priv->alloc_size >= ONE_MEG)
+      ? (fw_priv->alloc_size + ONE_MEG)
+      : ((fw_priv->alloc_size >= PAGE_SIZE) ? (fw_priv->alloc_size * 2) : PAGE_SIZE))
+    : (fw_priv->alloc_size + PAGE_SIZE);
+  new_data = vmalloc (new_size);
 	if (!new_data) {
-		printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__);
+		printk(KERN_ERR "%s: unable to alloc buffer old size %d new size %d\n",
+      __FUNCTION__, fw_priv->alloc_size, new_size);
 		/* Make sure that we don't keep incomplete data */
 		fw_load_abort(fw_priv);
 		return -ENOMEM;
 	}
-	fw_priv->alloc_size += PAGE_SIZE;
+  fw_priv->alloc_size = new_size;
 	if (fw_priv->fw->data) {
 		memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size);
 		vfree(fw_priv->fw->data);
@@ -249,6 +281,13 @@ firmware_data_write(struct kobject *kobj
 		goto out;
 
 	memcpy(fw->data + offset, buffer, count);
+  /*  A successful write should cause us to reset the timeout
+  delay, as very large firmware files might take a while to
+  send through the sysfs file.  We have the fw_lock taken at
+  the moment but the timeout function doesn't lock as it only
+  has to set a single volatile bit, so we're ok to mod it. */
+  if (timer_pending (&fw_priv->timeout))
+    mod_timer (&fw_priv->timeout, jiffies + loading_timeout * HZ);
 
 	fw->size = max_t(size_t, offset + count, fw->size);
 	retval = count;
@@ -568,6 +607,12 @@ firmware_class_init(void)
 		       __FUNCTION__);
 		class_unregister(&firmware_class);
 	}
+	error = class_create_file(&firmware_class, &class_attr_grow_faster);
+	if (error) {
+		printk(KERN_ERR "%s: class_create_file failed\n",
+		       __FUNCTION__);
+		class_unregister(&firmware_class);
+	}
 	return error;
 
 }

[-- Attachment #3: Type: text/plain, Size: 134 bytes --]

_______________________________________________
Make-w32 mailing list
Make-w32@gnu.org
http://lists.gnu.org/mailman/listinfo/make-w32

^ permalink raw reply

* Re: On Tabs and Spaces
From: Jeffrey C. Ollie @ 2007-10-16 15:26 UTC (permalink / raw)
  To: Adam Piatyszek; +Cc: Lars Hjemli, Michael Witten, git
In-Reply-To: <47148F72.1090602@users.sourceforge.net>

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

On Tue, 2007-10-16 at 12:16 +0200, Adam Piatyszek wrote:
> 
> And if one change the tab size, it will result in a messy alignment in
> line 5.

Which is why one should never should change the tab size from anything
but 8.

> I guess there is no ideal solution for this in Emacs.

Instead of using "(setq indent-tabs-mode t)" use "(setq indent-tabs-mode
nil)".  This will force emacs to always use spaces to indent.

Jeff


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

^ permalink raw reply

* Re: On Tabs and Spaces
From: Michael Witten @ 2007-10-16 15:51 UTC (permalink / raw)
  To: Jeffrey C. Ollie; +Cc: git
In-Reply-To: <1192548367.3821.4.camel@lt21223.campus.dmacc.edu>


On 16 Oct 2007, at 11:26:07 AM, Jeffrey C. Ollie wrote:

> Instead of using "(setq indent-tabs-mode t)" use "(setq indent-tabs- 
> mode
> nil)".  This will force emacs to always use spaces to indent.

That's part of the problem to begin with:
people are using both way of indentation.

I suggest this not be allowed, or that it
be the only way of indenting.

However, 8 spaces per tab is a lot of wasted
information to be bandying about.

Michael Witten

^ permalink raw reply

* Re: Switching from CVS to GIT
From: David Brown @ 2007-10-16 15:56 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Andreas Ericsson, barkalow, raa.lkml, Johannes.Schindelin, tsuna,
	git, make-w32
In-Reply-To: <E1Ihfrl-0007w1-3I@fencepost.gnu.org>

On Tue, Oct 16, 2007 at 02:25:21AM -0400, Eli Zaretskii wrote:

>On the other hand, what packages have 100K files?  If there's only one
>-- the Linux kernel -- then I think this kind of performance is for
>all practical purposes unimportant on Windows, because while it is
>reasonable to assume that someone would like to use git on Windows,
>assuming that someone will develop the Linux kernel on Windows is --
>how should I put it -- _really_ far-fetched ;-)

Oh, I wish others could think this clearly.  Quoting a serious line off of
a task list at an unnamed company:

   - Make Linux kernel compile under windows.

I don't think it will move past just being a wish list item, but there seem
to be people that think it should be done.

Admittedly, they don't want developers doing it on windows, but want to
integrate kernel building into a windows-heavy build and release process.

David

^ permalink raw reply

* Re: Switching from CVS to GIT
From: Nicolas Pitre @ 2007-10-16 16:04 UTC (permalink / raw)
  To: David Brown
  Cc: Eli Zaretskii, Andreas Ericsson, barkalow, raa.lkml,
	Johannes.Schindelin, tsuna, git, make-w32
In-Reply-To: <20071016155608.GA10603@old.davidb.org>

On Tue, 16 Oct 2007, David Brown wrote:

> On Tue, Oct 16, 2007 at 02:25:21AM -0400, Eli Zaretskii wrote:
> 
> > On the other hand, what packages have 100K files?  If there's only one
> > -- the Linux kernel -- then I think this kind of performance is for
> > all practical purposes unimportant on Windows, because while it is
> > reasonable to assume that someone would like to use git on Windows,
> > assuming that someone will develop the Linux kernel on Windows is --
> > how should I put it -- _really_ far-fetched ;-)
> 
> Oh, I wish others could think this clearly.  Quoting a serious line off of
> a task list at an unnamed company:
> 
>   - Make Linux kernel compile under windows.
> 
> I don't think it will move past just being a wish list item, but there seem
> to be people that think it should be done.

Linux is compilable on Windows, and has been for a long time already.
With Cygwin it is pretty trivial to do.  I prefer native Linux though.


Nicolas

^ permalink raw reply

* Re: Some git mv questions
From: Lars Hjemli @ 2007-10-16 16:05 UTC (permalink / raw)
  To: Jan Wielemaker; +Cc: git list
In-Reply-To: <200710161733.49185.wielemak@science.uva.nl>

On 10/16/07, Jan Wielemaker <wielemak@science.uva.nl> wrote:
>         * On a somewhat bigger test I moved a large directory using
>         "git mv dir newdir" (where newdir is an existing directory).
>         Now "git status" gives a lot of new and deleted files!?

You could try to adjust diff.renameLimit in .git/config

--
larsh

^ permalink raw reply

* RE: Switching from CVS to GIT
From: Dave Korn @ 2007-10-16 16:23 UTC (permalink / raw)
  To: 'David Brown', 'Eli Zaretskii'
  Cc: raa.lkml, barkalow, make-w32, Johannes.Schindelin,
	'Andreas Ericsson', git
In-Reply-To: <20071016155608.GA10603@old.davidb.org>

On 16 October 2007 16:56, David Brown wrote:

> On Tue, Oct 16, 2007 at 02:25:21AM -0400, Eli Zaretskii wrote:
> 
>> On the other hand, what packages have 100K files?  If there's only one
>> -- the Linux kernel -- then I think this kind of performance is for
>> all practical purposes unimportant on Windows, because while it is
>> reasonable to assume that someone would like to use git on Windows,
>> assuming that someone will develop the Linux kernel on Windows is --
>> how should I put it -- _really_ far-fetched ;-)
> 
> Oh, I wish others could think this clearly.  Quoting a serious line off of
> a task list at an unnamed company:
> 
>    - Make Linux kernel compile under windows.
> 
> I don't think it will move past just being a wish list item, but there seem
> to be people that think it should be done.
> 
> Admittedly, they don't want developers doing it on windows, but want to
> integrate kernel building into a windows-heavy build and release process.

  Do that kind of thing here all the time, hence my previous post.  Apart from
the netfilter stuff with the filenames-that-match-in-all-but-case, no real
problems, took me a couple of hours one afternoon.

  Cygwin is a good match for linux dev work.

    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

^ permalink raw reply

* Re: [PATCH 07/25] parse-options: make some arguments optional, add callbacks.
From: René Scharfe @ 2007-10-16 16:38 UTC (permalink / raw)
  To: Pierre Habouzit, git, Shawn O. Pearce
In-Reply-To: <20071016084510.GI6919@artemis.corp>

Pierre Habouzit schrieb:
> This bit is to allow to aggregate options with arguments together when
> the argument is numeric.
> 
>     +#if 0
>     +		/* can be used to understand -A1B1 like -A1 -B1 */
>     +		if (flag & OPT_SHORT && opt->opt && isdigit(*opt->opt)) {
>     +			*(int *)opt->value = strtol(opt->opt, (char **)&opt->opt, 10);
>     +			return 0;
>     +		}
>     +#endif

I don't like it, it complicates number options with unit suffixes (e.g.
--windows-memory of git-pack-objects).

René

^ permalink raw reply

* Re: [PATCH 07/25] parse-options: make some arguments optional, add callbacks.
From: Johannes Schindelin @ 2007-10-16 16:44 UTC (permalink / raw)
  To: René Scharfe; +Cc: Pierre Habouzit, git, Shawn O. Pearce
In-Reply-To: <4714E90C.80305@lsrfire.ath.cx>

Hi,

On Tue, 16 Oct 2007, Ren? Scharfe wrote:

> Pierre Habouzit schrieb:
> > This bit is to allow to aggregate options with arguments together when
> > the argument is numeric.
> > 
> >     +#if 0
> >     +		/* can be used to understand -A1B1 like -A1 -B1 */
> >     +		if (flag & OPT_SHORT && opt->opt && isdigit(*opt->opt)) {
> >     +			*(int *)opt->value = strtol(opt->opt, (char **)&opt->opt, 10);
> >     +			return 0;
> >     +		}
> >     +#endif
> 
> I don't like it, it complicates number options with unit suffixes (e.g.
> --windows-memory of git-pack-objects).

Why?  It only means that you cannot say -W10mxabc instead of -W10m xabc.  

Remember: this is a special case for OPT_INTEGER.  Nothing to do with 
OPT_SIZE, which you'd probably implement as a callback.

Ciao,
Dscho

^ 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