Git development
 help / color / mirror / Atom feed
* Re: Heads up: major rebase -i -p rework coming up
From: Johannes Schindelin @ 2009-01-25 14:17 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git
In-Reply-To: <glhqdi$tec$1@ger.gmane.org>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1040 bytes --]

Hi,

[please do not forget to Cc: me; today is a slow day, so I did not miss 
 your mail, but that is definitely not true on other days.]

On Sun, 25 Jan 2009, Jakub Narebski wrote:

> Johannes Schindelin wrote:
> 
> >> Hmm.  You're right, that is not really intuitive.  How about
> >> 
> >>       merge (B) A # Merge...
> >> 
> >> instead?
> > 
> > Or even better:
> > 
> >         merge B parent A' # Merge...
> 
> merge B with A' # Merge... 

No, that does not catch the meaning.

B is the _original_ merge commit.  So it actually knows what parents it 
has, but we want to give the user the freedom to change those parents.

The first parent is easy: this will be HEAD at that stage.

The other parents will be relatively easy: just replace A' by something 
else.

_However_ now that the merge commit B will be _redone_, we _still_ want to 
be able to refer to it later in the rebase script.  Therefore, rebase has 
to know that we _redid_ B at this stage.

Another idea:

	merge B Merge bla/blub
	parent A' bla/blub

Hmm?

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 1/2] handle color.ui at a central place
From: Markus Heidelberg @ 2009-01-25 14:15 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, René Scharfe, git
In-Reply-To: <7vk58ko8k7.fsf@gitster.siamese.dyndns.org>

Junio C Hamano, 24.01.2009:
> Markus Heidelberg <markus.heidelberg@web.de> writes:
> 
> > So with the following diff it works:
> >
> > -	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
> > +	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")
> > +				       || !strcmp(var, "color.ui")) {
> 
> Why should format-patch need to even worry about protecting itself from
> "color.ui" to begin with?

That's the reason, why color handling needs another rework than my
patch, which only was originated from the color.ui git_use_color_default
workarounds. Call it shortsighted, if you want.

> If your patch is making color handling saner, I would expect that
> format-patch can *lose* the existing "ignore diff.color or color.diff"
> workaround as a result of that.  If you need to add even *more* workaround
> code like that, there's something wrong, don't you think?

That's the reason, why it doesn't make sense to continue work on my
patch base.

> > format-patch is perhaps the only place where the commit has broken
> > things, because I didn't find other places,...
> 
> You did not find the breakage in format-patch either to begin with; so
> your not finding does not give us much confidence that there is no other
> breakage, does it?

Of course not.

> Grumble...

Why grumble? That was just a personal suspicion. I didn't say: "I think
this is the only breakage place, please reapply".

^ permalink raw reply

* Re: [PATCH 2/2] archive.c: add support for --submodules[=(all|checkedout)]
From: Johannes Schindelin @ 2009-01-25 13:55 UTC (permalink / raw)
  To: Lars Hjemli; +Cc: Junio C Hamano, git
In-Reply-To: <8c5c35580901250500s667db3f0j608a30541321ac0a@mail.gmail.com>

Hi,

On Sun, 25 Jan 2009, Lars Hjemli wrote:

> On Sun, Jan 25, 2009 at 12:57, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
>
> > My reasoning for "*" instead of "all" and "" instead for "checkedout" 
> > was that you could allow "<name1>,<name2>" at some stage, where <name> 
> > would first be interpreted as a submodule group, and if that fails, as 
> > submodule name.
> >
> > Thinking about that more, "" seems illogical, that should rather mean 
> > "none", i.e. the same as --no-submodules.  The "checkedout" could be 
> > "." then, perhaps?  As in "what we have checked out in ./, the current 
> > directory"?
> 
> Yes, I think that makes sense, i.e. '--submodules' will include _all_ 
> submodules (making the option behave identically for bare and non-bare 
> repositories), '--submodules=.' will include checked out submodules 
> (making the option a no-op in bare repos, which also makes sense) and 
> '--submodules=<name>[,<name>...]' will include the named submodules, 
> where "named" could mean groupname, submodule name or submodule path, in 
> that order.

Well, I can live with the default of all submodules, even if I think that 
"git-submodule.sh" uses the checked out submodules by default.

> But then we probably also want some (optional) syntax to specify the 
> kind of name, e.g. '--submodules=g:foo,n:bar,p:lib/baz' for group foo, 
> name bar and path lib/baz. Agree?

IMO that is overkill.  Anybody naming a submodule group identically to a 
submodule deserves what she gets, anyway.


> >> @@ -91,6 +92,70 @@ static void setup_archive_check(struct git_attr_check *check)
> >>       check[1].attr = attr_export_subst;
> >>  }
> >>
> >> +static int include_repository(const char *path)
> >> +{
> >> +     struct stat st;
> >> +     const char *tmp;
> >> +
> >> +     /* Return early if the path does not exist since it is OK to not
> >> +      * checkout submodules.
> >> +      */
> >> +     if (stat(path, &st) && errno == ENOENT)
> >> +             return 1;
> >> +
> >> +     tmp = read_gitfile_gently(path);
> >
> > This will leak memory, no?
> 
> I don't think so: read_gitfile_gently() returns a value obtained by
> calling make_absolute_path() which returns a static buffer. Also, the
> path argument to include_repository() is obtained by calling mkpath()
> which returns another static buffer so I don't see any malloc()'s
> which should be free()'d. Is my code-reading flawed?

No, your code reading is good.  And you spared me having to read the code 
myself ;-)  Now, maybe a code comment is in order, to spare others, too?

Ciao,
Dscho

^ permalink raw reply

* Re: Heads up: major rebase -i -p rework coming up
From: Jakub Narebski @ 2009-01-25 13:46 UTC (permalink / raw)
  To: git
In-Reply-To: <alpine.DEB.1.00.0901250324320.14855@racer>

Johannes Schindelin wrote:

>> Hmm.  You're right, that is not really intuitive.  How about
>> 
>>       merge (B) A # Merge...
>> 
>> instead?
> 
> Or even better:
> 
>         merge B parent A' # Merge...

merge B with A' # Merge... 

;-)

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git

^ permalink raw reply

* Re: [PATCH 2/2] archive.c: add support for --submodules[=(all|checkedout)]
From: Lars Hjemli @ 2009-01-25 13:00 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Junio C Hamano, git
In-Reply-To: <alpine.DEB.1.00.0901251247040.14855@racer>

On Sun, Jan 25, 2009 at 12:57, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Sun, 25 Jan 2009, Lars Hjemli wrote:
>
>> The --submodules option uses the enhanced read_tree_recursive() to
>> enable inclusion of submodules in the generated archive.
>>
>> When invoked with `--submodules=all` all gitlink entries will be
>> traversed, and when invoked with --submodules=checkedout (the default
>> option) only gitlink entries with a git repo (i.e. checked out sub-
>> modules) will be traversed.
>
>                               In bare repositories, this means: none.
>
> My reasoning for "*" instead of "all" and "" instead for "checkedout" was
> that you could allow "<name1>,<name2>" at some stage, where <name> would
> first be interpreted as a submodule group, and if that fails, as submodule
> name.
>
> Thinking about that more, "" seems illogical, that should rather mean
> "none", i.e. the same as --no-submodules.  The "checkedout" could be "."
> then, perhaps?  As in "what we have checked out in ./, the current
> directory"?

Yes, I think that makes sense, i.e. '--submodules' will include _all_
submodules (making the option behave identically for bare and non-bare
repositories), '--submodules=.' will include checked out submodules
(making the option a no-op in bare repos, which also makes sense) and
'--submodules=<name>[,<name>...]' will include the named submodules,
where "named" could mean groupname, submodule name or submodule path,
in that order.

But then we probably also want some (optional) syntax to specify the
kind of name, e.g. '--submodules=g:foo,n:bar,p:lib/baz' for group foo,
name bar and path lib/baz. Agree?

>
>> When a gitlink has been selected for traversal, it is required that all
>> objects necessary to perform this traversal are available in either the
>> primary odb or through an alternate odb. To this end, git archive will
>> insert the object database of the selected gitlink (when checked out)
>> as an alternate odb, using the new function add_alt_odb().
>
>> And since alternates now can be added after parsing of
>> objects/info/alternates, the error message in link_alt_odb_entry() has
>> been updated to not mention this file.
>
> Could you split that part into its own patch again, please?

Sure.


>
>> @@ -91,6 +92,70 @@ static void setup_archive_check(struct git_attr_check *check)
>>       check[1].attr = attr_export_subst;
>>  }
>>
>> +static int include_repository(const char *path)
>> +{
>> +     struct stat st;
>> +     const char *tmp;
>> +
>> +     /* Return early if the path does not exist since it is OK to not
>> +      * checkout submodules.
>> +      */
>> +     if (stat(path, &st) && errno == ENOENT)
>> +             return 1;
>> +
>> +     tmp = read_gitfile_gently(path);
>
> This will leak memory, no?

I don't think so: read_gitfile_gently() returns a value obtained by
calling make_absolute_path() which returns a static buffer. Also, the
path argument to include_repository() is obtained by calling mkpath()
which returns another static buffer so I don't see any malloc()'s
which should be free()'d. Is my code-reading flawed?

--
larsh

^ permalink raw reply

* Re: [PATCH 1/2] tree.c: allow read_tree_recursive() to traverse  gitlink entries
From: Lars Hjemli @ 2009-01-25 12:30 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Junio C Hamano, git
In-Reply-To: <alpine.DEB.1.00.0901251225250.14855@racer>

On Sun, Jan 25, 2009 at 12:43, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> On Sun, 25 Jan 2009, Lars Hjemli wrote:
>
>> This functionality can be used to allow inter-repository operations, but
>> since the current users of read_tree_recursive() does not yet support
>> such operations, they have been modified where necessary to make sure
>> that they never return READ_TREE_RECURSIVE for gitlink entries (hence no
>> change in behaviour should be introduces by this patch alone).
>
> s/\(introduce\)s/\1d/

Thanks

>
>> diff --git a/archive.c b/archive.c
>> index 9ac455d..e6de039 100644
>> --- a/archive.c
>> +++ b/archive.c
>> @@ -132,7 +132,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base,
>>               err = write_entry(args, sha1, path.buf, path.len, mode, NULL, 0);
>>               if (err)
>>                       return err;
>> -             return READ_TREE_RECURSIVE;
>> +             return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);
>
> You do not need the parentheses around the conditional:
>
>        $ git grep 'return (.*?' *.c | wc -l
>        14
>        gene099@racer:~/git (rebase-i-p)$ git grep 'return [^(]*?' *.c | wc -l
>        41
>
> Note that the 14 matches include 9 false positives.

Ok, will fix.

>
>> diff --git a/builtin-ls-tree.c b/builtin-ls-tree.c
>> index 5b63e6e..fca4631 100644
>> --- a/builtin-ls-tree.c
>> +++ b/builtin-ls-tree.c
>> @@ -68,13 +68,8 @@ static int show_tree(const unsigned char *sha1, const char *base, int baselen,
>>                *
>>                * Something similar to this incomplete example:
>>                *
>> -             if (show_subprojects(base, baselen, pathname)) {
>> -                     struct child_process ls_tree;
>> -
>> -                     ls_tree.dir = base;
>> -                     ls_tree.argv = ls-tree;
>
> I wondered how that could ever have compiled...
>
> Until I inspected the file (which is different in junio/next from what you
> based your patch on; your patch is vs junio/master).

Yes, sorry for not mentioning that.


>
>> @@ -131,6 +131,34 @@ int read_tree_recursive(struct tree *tree,
>>                       if (retval)
>>                               return -1;
>>                       continue;
>> +             } else if (S_ISGITLINK(entry.mode)) {
>> +                     int retval;
>> +                     struct strbuf path;
>
> s/;/ = STRBUF_INIT;/

I skipped the STRBUF_INIT since I used strbuf_init() below, but...


>
>> +                     unsigned int entrylen;
>> +                     struct commit *commit;
>> +
>> +                     entrylen = tree_entry_len(entry.path, entry.sha1);
>> +                     strbuf_init(&path, baselen + entrylen + 1);
>> +                     strbuf_add(&path, base, baselen);
>> +                     strbuf_add(&path, entry.path, entrylen);
>> +                     strbuf_addch(&path, '/');
>
> Why not
>                        strbuf_addf(&path, "%.*s%.*s/", baselen, base,
>                                entrylen, entry.path);

...with this cute fix the STRBUF_INIT is required. Will fix.

Thanks for the review.

--
larsh

^ permalink raw reply

* [PATCH v2] diff-options.txt: Fix asciidoc markup issue
From: Teemu Likonen @ 2009-01-25 12:20 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: gitster, git
In-Reply-To: <alpine.DEB.1.00.0901251257510.14855@racer>

Must be "--patience::", not "--patience:".

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
---

Johannes Schindelin (2009-01-25 12:58 +0100) wrote:

> Thanks.  If you would add your Sign-off, I'd add my Acked-by.

Here's a new version. Though it feels a bit funny to add a S-o-b for a
patch that does nothing but adds a single character. :-)


 Documentation/diff-options.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 3816a83..813a7b1 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -36,7 +36,7 @@ endif::git-format-patch[]
 --patch-with-raw::
 	Synonym for "-p --raw".
 
---patience:
+--patience::
 	Generate a diff using the "patience diff" algorithm.
 
 --stat[=width[,name-width]]::
-- 
1.6.1.295.g75c4eae

^ permalink raw reply related

* Re: What's cooking in git.git (Jan 2009, #06; Sat, 24)
From: Johannes Schindelin @ 2009-01-25 12:17 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7v8wp0kmj4.fsf@gitster.siamese.dyndns.org>

Hi,

On Sat, 24 Jan 2009, Junio C Hamano wrote:

> ----------------------------------------------------------------
> [Actively cooking]
> 
> * js/valgrind (Wed Jan 21 02:36:40 2009 +0100) 2 commits
>  - valgrind: ignore ldso errors
>  - Add valgrind support in test scripts
> 
> Dscho seems to have some updates out of discussion with Peff, which is 
> not queued here.

Yep.  I got sidetracked with the rebase -i -p stuff.  Will try to submit 
something usable later today.

BTW a test run on my machine resulted in a few koku of valgrind errors; 
This was done in my personal tree which contains dozens of extra patches, 
so I want to repeat the exercize with 'next' first, but I think we will 
get quite some patches due to the valgrind support...

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 1/2] user-manual: Simplify the user configuration.
From: Johannes Schindelin @ 2009-01-25 12:06 UTC (permalink / raw)
  To: Kyle Moffett; +Cc: Hannu Koivisto, Felipe Contreras, Junio C Hamano, git
In-Reply-To: <f73f7ab80901242332x7de1f856j51181c3c05cf2b11@mail.gmail.com>

Hi,

On Sun, 25 Jan 2009, Kyle Moffett wrote:

> Actually, if msysgit really wanted to be a "native" windows program,

... it would

- not use MSys, but MSVC++,

- have a backing by a startup company,

- not use any of Git's source code at all, but reimplement everything in 
  closed source,

- come with a shrink wrapped box and a huge manual,

- do a lot of BS advertisement,

- offer overprized courses for management, in fancy locations,

- would cost around 50 dollars for a single license,

- would cost around 1500 dollars for a site-wide license with free 
  upgrades for 3 years and 2 free training courses,

- be dog slow, eating resources like mad, and

- crash frequently.

Other questions?

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH] diff-options.txt: Fix asciidoc markup issue
From: Johannes Schindelin @ 2009-01-25 11:58 UTC (permalink / raw)
  To: Teemu Likonen; +Cc: gitster, git
In-Reply-To: <1232860721-6174-1-git-send-email-tlikonen@iki.fi>

Hi,

On Sun, 25 Jan 2009, Teemu Likonen wrote:

> Must be "--patience::", not "--patience:".

Thanks.  If you would add your Sign-off, I'd add my Acked-by.

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 2/2] archive.c: add support for --submodules[=(all|checkedout)]
From: Johannes Schindelin @ 2009-01-25 11:57 UTC (permalink / raw)
  To: Lars Hjemli; +Cc: Junio C Hamano, git
In-Reply-To: <1232844726-14902-3-git-send-email-hjemli@gmail.com>

Hi,

On Sun, 25 Jan 2009, Lars Hjemli wrote:

> The --submodules option uses the enhanced read_tree_recursive() to
> enable inclusion of submodules in the generated archive.
> 
> When invoked with `--submodules=all` all gitlink entries will be
> traversed, and when invoked with --submodules=checkedout (the default
> option) only gitlink entries with a git repo (i.e. checked out sub-
> modules) will be traversed.

                               In bare repositories, this means: none.

My reasoning for "*" instead of "all" and "" instead for "checkedout" was 
that you could allow "<name1>,<name2>" at some stage, where <name> would 
first be interpreted as a submodule group, and if that fails, as submodule 
name.

Thinking about that more, "" seems illogical, that should rather mean 
"none", i.e. the same as --no-submodules.  The "checkedout" could be "." 
then, perhaps?  As in "what we have checked out in ./, the current 
directory"?

> When a gitlink has been selected for traversal, it is required that all
> objects necessary to perform this traversal are available in either the
> primary odb or through an alternate odb. To this end, git archive will
> insert the object database of the selected gitlink (when checked out)
> as an alternate odb, using the new function add_alt_odb().

> And since alternates now can be added after parsing of 
> objects/info/alternates, the error message in link_alt_odb_entry() has 
> been updated to not mention this file.

Could you split that part into its own patch again, please?

> @@ -91,6 +92,70 @@ static void setup_archive_check(struct git_attr_check *check)
>  	check[1].attr = attr_export_subst;
>  }
>  
> +static int include_repository(const char *path)
> +{
> +	struct stat st;
> +	const char *tmp;
> +
> +	/* Return early if the path does not exist since it is OK to not
> +	 * checkout submodules.
> +	 */
> +	if (stat(path, &st) && errno == ENOENT)
> +		return 1;
> +
> +	tmp = read_gitfile_gently(path);

This will leak memory, no?

> +	if (tmp) {
> +		path = tmp;
> +		if (stat(path, &st))
> +			die("Unable to stat submodule gitdir %s: %s (%d)",
> +			    path, strerror(errno), errno);
> +	}
> +
> +	if (!S_ISDIR(st.st_mode))
> +		die("Submodule gitdir %s is not a directory", path);
> +
> +	if (add_alt_odb(mkpath("%s/objects", path)))
> +		die("submodule odb %s could not be added as an alternate",
> +		    path);
> +
> +	return 0;
> +}

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 1/2] tree.c: allow read_tree_recursive() to traverse gitlink entries
From: Johannes Schindelin @ 2009-01-25 11:43 UTC (permalink / raw)
  To: Lars Hjemli; +Cc: Junio C Hamano, git
In-Reply-To: <1232844726-14902-2-git-send-email-hjemli@gmail.com>

Hi,

On Sun, 25 Jan 2009, Lars Hjemli wrote:

> When the callback function invoked from read_tree_recursive() returns
> the value `READ_TREE_RECURSIVE` for a gitlink entry, the traversal will
> now continue into the tree connected to the gitlinked commit.

\n

> This functionality can be used to allow inter-repository operations, but 
> since the current users of read_tree_recursive() does not yet support 
> such operations, they have been modified where necessary to make sure 
> that they never return READ_TREE_RECURSIVE for gitlink entries (hence no 
> change in behaviour should be introduces by this patch alone).

s/\(introduce\)s/\1d/

> diff --git a/archive.c b/archive.c
> index 9ac455d..e6de039 100644
> --- a/archive.c
> +++ b/archive.c
> @@ -132,7 +132,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base,
>  		err = write_entry(args, sha1, path.buf, path.len, mode, NULL, 0);
>  		if (err)
>  			return err;
> -		return READ_TREE_RECURSIVE;
> +		return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);

You do not need the parentheses around the conditional:

	$ git grep 'return (.*?' *.c | wc -l
	14
	gene099@racer:~/git (rebase-i-p)$ git grep 'return [^(]*?' *.c | wc -l
	41

Note that the 14 matches include 9 false positives.

> diff --git a/builtin-ls-tree.c b/builtin-ls-tree.c
> index 5b63e6e..fca4631 100644
> --- a/builtin-ls-tree.c
> +++ b/builtin-ls-tree.c
> @@ -68,13 +68,8 @@ static int show_tree(const unsigned char *sha1, const char *base, int baselen,
>  		 *
>  		 * Something similar to this incomplete example:
>  		 *
> -		if (show_subprojects(base, baselen, pathname)) {
> -			struct child_process ls_tree;
> -
> -			ls_tree.dir = base;
> -			ls_tree.argv = ls-tree;

I wondered how that could ever have compiled...

Until I inspected the file (which is different in junio/next from what you 
based your patch on; your patch is vs junio/master).

> @@ -131,6 +131,34 @@ int read_tree_recursive(struct tree *tree,
>  			if (retval)
>  				return -1;
>  			continue;
> +		} else if (S_ISGITLINK(entry.mode)) {
> +			int retval;
> +			struct strbuf path;

s/;/ = STRBUF_INIT;/

> +			unsigned int entrylen;
> +			struct commit *commit;
> +
> +			entrylen = tree_entry_len(entry.path, entry.sha1);
> +			strbuf_init(&path, baselen + entrylen + 1);
> +			strbuf_add(&path, base, baselen);
> +			strbuf_add(&path, entry.path, entrylen);
> +			strbuf_addch(&path, '/');

Why not
			strbuf_addf(&path, "%.*s%.*s/", baselen, base, 
				entrylen, entry.path);

> +
> +			commit = lookup_commit(entry.sha1);
> +			if (!commit)
> +				die("Commit %s in submodule path %s not found",
> +				    sha1_to_hex(entry.sha1), path.buf);
> +
> +			if (parse_commit(commit))
> +				die("Invalid commit %s in submodule path %s",
> +				    sha1_to_hex(entry.sha1), path.buf);
> +
> +			retval = read_tree_recursive(commit->tree,
> +						     path.buf, path.len,
> +						     stage, match, fn, context);
> +			strbuf_release(&path);
> +			if (retval)
> +				return -1;
> +			continue;

I'd also place a comment above read_tree_recursive() stating that this 
function tries to traverse into submodules when READ_TREE_RECURSIVE is 
returned for submodule entries, but no attempt is made at including 
alternate object directories.  (And it must be that way: think bare 
repositories -- they cannot just try to include a subdirectory's 
.git/objects/..)

Ciao,
Dscho

^ permalink raw reply

* git-svn: cloning from svn.apache.org
From: Florian Weimer @ 2009-01-25 10:49 UTC (permalink / raw)
  To: git

What can be done to speed up cloning from svn.apache.org?  It's a
Subversion repository with over 700,000 revisions.  Many projects
stored there started their life in some of the later revisions, and
the forward-scanning part of git-svn takes ages.

I wonder if it were faster to search history backwards, starting with
the specified path, similar to what "svn log" does?

^ permalink raw reply

* Re: CR codes from git commands
From: Boyd Stephen Smith Jr. @ 2009-01-25  9:19 UTC (permalink / raw)
  To: Brent Goodrick; +Cc: git
In-Reply-To: <18811.32772.728276.923430@hungover.brentg.com>

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

On Saturday 24 January 2009, Brent Goodrick <bgoodr@gmail.com> wrote 
about 'Re: CR codes from git commands':
>While I'm at it, what is the standard procedure for submitting git
>patches for review once I've cooked up and validated it on my end? I'm
>guessing posting the patch into this mailing list is part of the
>answer to that question.

If you've got a patch, I assume you've got a checkout.  Look in 
Documentation/SubmittingPatches.
-- 
Boyd Stephen Smith Jr.                     ,= ,-_-. =. 
bss@iguanasuicide.net                     ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' 
http://iguanasuicide.net/                      \_/     

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

^ permalink raw reply

* Re: [PATCH 0/2] Add submodule-support to git archive
From: Lars Hjemli @ 2009-01-25  8:18 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Junio C Hamano, Johannes Schindelin, git
In-Reply-To: <20090125135340.6117@nanako3.lavabit.com>

On Sun, Jan 25, 2009 at 05:53, Nanako Shiraishi <nanako3@lavabit.com> wrote:
> What would I do to try this new series? Fork a branch from Junio's master branch,
> apply your new patches, and merge the result to Junio's next?

Yes, that sounds right (btw: the series is buildt on top of 5dc1308562
(Merge branch 'js/patience-diff') and can be pulled from
git://hjemli.net/pub/git/git lh/traverse-gitlinks).

But before merging with 'next', you'll need to `git revert -m 1 bdf31cbc00`.

--
larsh

^ permalink raw reply

* Re: [PATCH 1/2] user-manual: Simplify the user configuration.
From: Kyle Moffett @ 2009-01-25  7:32 UTC (permalink / raw)
  To: Hannu Koivisto; +Cc: Felipe Contreras, Junio C Hamano, git, Johannes Schindelin
In-Reply-To: <83wscndv57.fsf@kalahari.s2.org>

On Thu, Jan 22, 2009 at 1:59 PM, Hannu Koivisto <azure@iki.fi> wrote:
> In any case, what Cygwin git does should be expected by Cygwin
> users.  If msysgit wanted to be a really native Windows application
> and store the configuration where Microsoft thinks it should be
> stored, it probably shouldn't store the config under "home
> directory" to begin with (I'm guessing that's what it does) but
> under %USERPROFILE\Application Data\Git (...FILE\Local
> Settings\... in case non-roaming storage is wanted).  And in that
> case the manual might be misleading for msysgit users.  See
> e.g. <http://msdn.microsoft.com/en-us/library/ms995853.aspx>.

Actually, if msysgit really wanted to be a "native" windows program,
it would use the good-old brain-damaged method of storing
everything-and-the-kitchen-sink in the registry, including the
locations and reflogs for every repository you have ever examined.
Admittedly the collection of 150+ dotfiles in my Linux homedir looks
relatively similar to parts of the windows registry at times...

Cheers,
Kyle Moffett

^ permalink raw reply

* [PATCH] git-svn: add --ignore-paths option for fetching
From: Vitaly "_Vi" Shukela @ 2009-01-25  6:27 UTC (permalink / raw)
  To: git, normalperson; +Cc: Vitaly "_Vi" Shukela


Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
---
 Documentation/git-svn.txt |    4 ++++
 git-svn.perl              |   25 +++++++++++++++++++++++--
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 63d2f5e..4aeb88b 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -96,6 +96,10 @@ COMMANDS
 	Store Git commit times in the local timezone instead of UTC.  This
 	makes 'git-log' (even without --date=local) show the same times
 	that `svn log` would in the local timezone.
+--ignore-paths=<regex>;;
+	This allows one to specify regular expression that will
+	cause skipping of all matching paths from checkout from SVN.
+	Example: --ignore-paths='^doc'
 
 This doesn't interfere with interoperating with the Subversion
 repository you cloned from, but if you wish for your local Git
diff --git a/git-svn.perl b/git-svn.perl
index d4cb538..4909b23 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -70,7 +70,8 @@ my ($_stdin, $_help, $_edit,
 $Git::SVN::_follow_parent = 1;
 my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username,
                     'config-dir=s' => \$Git::SVN::Ra::config_dir,
-                    'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache );
+                    'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache,
+                    'ignore-paths=s' => \$SVN::Git::Fetcher::ignoreRegex );
 my %fc_opts = ( 'follow-parent|follow!' => \$Git::SVN::_follow_parent,
 		'authors-file|A=s' => \$_authors,
 		'repack:i' => \$Git::SVN::_repack,
@@ -3245,6 +3246,15 @@ use warnings;
 use Carp qw/croak/;
 use File::Temp qw/tempfile/;
 use IO::File qw//;
+use vars qw/ $ignoreRegex/;
+
+# 0 -- don't ignore, 1 -- ignore
+sub isPathIgnored($) {
+    return 0 unless defined($ignoreRegex);
+    my $path = shift;
+    return 1 if $path =~ m!^$ignoreRegex!o;
+    return 0;
+}
 
 # file baton members: path, mode_a, mode_b, pool, fh, blob, base
 sub new {
@@ -3323,6 +3333,7 @@ sub git_path {
 sub delete_entry {
 	my ($self, $path, $rev, $pb) = @_;
 	return undef if in_dot_git($path);
+	return undef if isPathIgnored($path);
 
 	my $gpath = $self->git_path($path);
 	return undef if ($gpath eq '');
@@ -3353,6 +3364,7 @@ sub open_file {
 	my ($mode, $blob);
 
 	goto out if in_dot_git($path);
+	goto out if isPathIgnored($path);
 
 	my $gpath = $self->git_path($path);
 	($mode, $blob) = (command('ls-tree', $self->{c}, '--', $gpath)
@@ -3372,11 +3384,14 @@ sub add_file {
 	my ($self, $path, $pb, $cp_path, $cp_rev) = @_;
 	my $mode;
 
+	goto out if isPathIgnored($path);
+
 	if (!in_dot_git($path)) {
 		my ($dir, $file) = ($path =~ m#^(.*?)/?([^/]+)$#);
 		delete $self->{empty}->{$dir};
 		$mode = '100644';
 	}
+out:
 	{ path => $path, mode_a => $mode, mode_b => $mode,
 	  pool => SVN::Pool->new, action => 'A' };
 }
@@ -3384,6 +3399,7 @@ sub add_file {
 sub add_directory {
 	my ($self, $path, $cp_path, $cp_rev) = @_;
 	goto out if in_dot_git($path);
+	goto out if isPathIgnored($path);
 	my $gpath = $self->git_path($path);
 	if ($gpath eq '') {
 		my ($ls, $ctx) = command_output_pipe(qw/ls-tree
@@ -3408,6 +3424,7 @@ out:
 sub change_dir_prop {
 	my ($self, $db, $prop, $value) = @_;
 	return undef if in_dot_git($db->{path});
+	return undef if isPathIgnored($db->{path});
 	$self->{dir_prop}->{$db->{path}} ||= {};
 	$self->{dir_prop}->{$db->{path}}->{$prop} = $value;
 	undef;
@@ -3416,6 +3433,7 @@ sub change_dir_prop {
 sub absent_directory {
 	my ($self, $path, $pb) = @_;
 	return undef if in_dot_git($pb->{path});
+	return undef if isPathIgnored($path);
 	$self->{absent_dir}->{$pb->{path}} ||= [];
 	push @{$self->{absent_dir}->{$pb->{path}}}, $path;
 	undef;
@@ -3424,6 +3442,7 @@ sub absent_directory {
 sub absent_file {
 	my ($self, $path, $pb) = @_;
 	return undef if in_dot_git($pb->{path});
+	return undef if isPathIgnored($path);
 	$self->{absent_file}->{$pb->{path}} ||= [];
 	push @{$self->{absent_file}->{$pb->{path}}}, $path;
 	undef;
@@ -3432,6 +3451,7 @@ sub absent_file {
 sub change_file_prop {
 	my ($self, $fb, $prop, $value) = @_;
 	return undef if in_dot_git($fb->{path});
+	return undef if isPathIgnored($fb->{path});
 	if ($prop eq 'svn:executable') {
 		if ($fb->{mode_b} != 120000) {
 			$fb->{mode_b} = defined $value ? 100755 : 100644;
@@ -3448,6 +3468,7 @@ sub change_file_prop {
 sub apply_textdelta {
 	my ($self, $fb, $exp) = @_;
 	return undef if (in_dot_git($fb->{path}));
+	return undef if isPathIgnored($fb->{path});
 	my $fh = $::_repository->temp_acquire('svn_delta');
 	# $fh gets auto-closed() by SVN::TxDelta::apply(),
 	# (but $base does not,) so dup() it for reading in close_file
@@ -3495,7 +3516,7 @@ sub apply_textdelta {
 sub close_file {
 	my ($self, $fb, $exp) = @_;
 	return undef if (in_dot_git($fb->{path}));
-
+	return undef if isPathIgnored($fb->{path});
 	my $hash;
 	my $path = $self->git_path($fb->{path});
 	if (my $fh = $fb->{fh}) {
-- 
1.5.6.5

^ permalink raw reply related

* [PATCH] http-push: refactor request url creation
From: Ray Chuan @ 2009-01-25  6:08 UTC (permalink / raw)
  To: git, Johannes Schindelin

Currently, functions that deal with objects on the remote repository
have to allocate and do strcpys to generate the URL.

This patch saves them this trouble, by providing a function that
returns a URL: either the object's 2-digit hex directory (eg.
/objects/a1/) or the complete object location (eg. /objects/a1/b2).

Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
---

* renamed only_two_digit_postfix in original patch to only_two_digit_prefix
* rebased and generated on master (5dc1308)

 http-push.c |   58 +++++++++++++++++++---------------------------------------
 1 files changed, 19 insertions(+), 39 deletions(-)

diff --git a/http-push.c b/http-push.c
index eca4a8e..27825f2 100644
--- a/http-push.c
+++ b/http-push.c
@@ -208,6 +208,16 @@ static struct curl_slist
*get_dav_token_headers(struct remote_lock *lock, enum d
 	return dav_headers;
 }

+static char *get_remote_object_url(const char *url, const char *hex,
int only_two_digit_prefix) {
+	struct strbuf buf = STRBUF_INIT;
+
+	strbuf_addf(&buf, "%sobjects/%.*s/", url, 2, hex);
+	if(!only_two_digit_prefix)
+		strbuf_addf(&buf, "%s", hex+2);
+
+	return strbuf_detach(&buf, NULL);
+}
+
 static void finish_request(struct transfer_request *request);
 static void release_request(struct transfer_request *request);

@@ -253,8 +263,6 @@ static void start_fetch_loose(struct
transfer_request *request)
 	char *hex = sha1_to_hex(request->obj->sha1);
 	char *filename;
 	char prevfile[PATH_MAX];
-	char *url;
-	char *posn;
 	int prevlocal;
 	unsigned char prev_buf[PREV_BUF_SIZE];
 	ssize_t prev_read = 0;
@@ -304,17 +312,7 @@ static void start_fetch_loose(struct
transfer_request *request)

 	git_SHA1_Init(&request->c);

-	url = xmalloc(strlen(remote->url) + 50);
-	request->url = xmalloc(strlen(remote->url) + 50);
-	strcpy(url, remote->url);
-	posn = url + strlen(remote->url);
-	strcpy(posn, "objects/");
-	posn += 8;
-	memcpy(posn, hex, 2);
-	posn += 2;
-	*(posn++) = '/';
-	strcpy(posn, hex + 2);
-	strcpy(request->url, url);
+	request->url = get_remote_object_url(remote->url, hex, 0);

 	/* If a previous temp file is present, process what was already
 	   fetched. */
@@ -358,7 +356,7 @@ static void start_fetch_loose(struct
transfer_request *request)
 	curl_easy_setopt(slot->curl, CURLOPT_FILE, request);
 	curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_sha1_file);
 	curl_easy_setopt(slot->curl, CURLOPT_ERRORBUFFER, request->errorstr);
-	curl_easy_setopt(slot->curl, CURLOPT_URL, url);
+	curl_easy_setopt(slot->curl, CURLOPT_URL, request->url);
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, no_pragma_header);

 	/* If we have successfully processed data from a previous fetch
@@ -387,16 +385,8 @@ static void start_mkcol(struct transfer_request *request)
 {
 	char *hex = sha1_to_hex(request->obj->sha1);
 	struct active_request_slot *slot;
-	char *posn;

-	request->url = xmalloc(strlen(remote->url) + 13);
-	strcpy(request->url, remote->url);
-	posn = request->url + strlen(remote->url);
-	strcpy(posn, "objects/");
-	posn += 8;
-	memcpy(posn, hex, 2);
-	posn += 2;
-	strcpy(posn, "/");
+	request->url = get_remote_object_url(remote->url, hex, 1);

 	slot = get_active_slot();
 	slot->callback_func = process_response;
@@ -511,7 +501,7 @@ static void start_put(struct transfer_request *request)
 {
 	char *hex = sha1_to_hex(request->obj->sha1);
 	struct active_request_slot *slot;
-	char *posn;
+	struct strbuf url_buf = STRBUF_INIT;
 	enum object_type type;
 	char hdr[50];
 	void *unpacked;
@@ -550,21 +540,11 @@ static void start_put(struct transfer_request *request)

 	request->buffer.buf.len = stream.total_out;

-	request->url = xmalloc(strlen(remote->url) +
-			       strlen(request->lock->token) + 51);
-	strcpy(request->url, remote->url);
-	posn = request->url + strlen(remote->url);
-	strcpy(posn, "objects/");
-	posn += 8;
-	memcpy(posn, hex, 2);
-	posn += 2;
-	*(posn++) = '/';
-	strcpy(posn, hex + 2);
-	request->dest = xmalloc(strlen(request->url) + 14);
-	sprintf(request->dest, "Destination: %s", request->url);
-	posn += 38;
-	*(posn++) = '_';
-	strcpy(posn, request->lock->token);
+	strbuf_addf(&url_buf, "Destination: %s",
get_remote_object_url(remote->url, hex, 0));
+	request->dest = strbuf_detach(&url_buf, NULL);
+
+	strbuf_addf(&url_buf, "%s_%s", get_remote_object_url(remote->url,
hex, 0), request->lock->token);
+	request->url = strbuf_detach(&url_buf, NULL);

 	slot = get_active_slot();
 	slot->callback_func = process_response;
-- 
1.6.0.4

^ permalink raw reply related

* Re: [PATCH] mergetool merge/skip/abort
From: Junio C Hamano @ 2009-01-25  5:20 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Caleb Cushing, Charles Bailey, git
In-Reply-To: <20090125064539.6117@nanako3.lavabit.com>

Nanako Shiraishi <nanako3@lavabit.com> writes:

>  2. patterns in case command start at the same column as case and esac,
>     and ";;" is at the same column as any other commands.
>
> 	case "$ans" in
> 	[mM]*|"")
> 		break
> 		;;
> 	[Ss]*)
> 		...
> 	esac

I generally prefer the above style, but mergetool is not mine, and the
predominant style in it is:

        case xyzzy in
            frotz)
                do this
                ;;
            nitfol)
                do that
                ;;
        esac

Namely, case arms' labels are indented by 4 spaces from case/esac, and the
commands in each case arm are further indented by 4 spaces (including the
terminating double-semicolon).

It is always preferable to match the _local_ convention.  I'd expect a new
script added to git suite to match my preference (the one I showed you in
my comments to you that is used in git-am, which is what you suggested
above), but I'd expect a modification to mergetool to match the style
mergetool already uses.

IOW, Caleb's indentation style is fine.  The placement of double-semicolon
is not, though.

^ permalink raw reply

* [PATCH] diff-options.txt: Fix asciidoc markup issue
From: Teemu Likonen @ 2009-01-25  5:18 UTC (permalink / raw)
  To: gitster; +Cc: git, Johannes.Schindelin

Must be "--patience::", not "--patience:".
---
 Documentation/diff-options.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 3816a83..813a7b1 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -36,7 +36,7 @@ endif::git-format-patch[]
 --patch-with-raw::
 	Synonym for "-p --raw".
 
---patience:
+--patience::
 	Generate a diff using the "patience diff" algorithm.
 
 --stat[=width[,name-width]]::
-- 
1.6.1.295.g75c4eae

^ permalink raw reply related

* Re: [PATCH] Allow cloning an empty repository
From: Junio C Hamano @ 2009-01-25  5:05 UTC (permalink / raw)
  To: Sverre Rabbelier; +Cc: Johannes Schindelin, Git Mailinglist, Miklos Vajna
In-Reply-To: <bd6139dc0901241655n66f75a8fn8450b774809fa8e7@mail.gmail.com>

Sverre Rabbelier <srabbelier@gmail.com> writes:

> On Sun, Jan 25, 2009 at 01:49, Miklos Vajna <vmiklos@frugalware.org> wrote:
>> On Sat, Jan 24, 2009 at 01:42:30AM +0100, Sverre Rabbelier <srabbelier@gmail.com> wrote:
>>> Which means all protocols actually die?
>>
>> I think so.
>
> Junio, are your concerns address now, since Miklos confirmed that
> transport_get_remote_refs always dies?

Yeah, it is on 'next' and I've pushed the results out last night, but I
got sick and didn't manage to send out "What's cooking".

^ permalink raw reply

* What's in git.git (Jan 2009, #03; Sat, 24)
From: Junio C Hamano @ 2009-01-25  5:01 UTC (permalink / raw)
  To: git

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

Anders Melchiorsen (4):
  Documentation: git push repository can also be a remote
  Documentation: remove a redundant elaboration
  Documentation: mention branches rather than heads
  Documentation: avoid using undefined parameters

Boyd Stephen Smith Jr (1):
  Fix Documentation for git-describe

Clemens Buchacher (3):
  unpack-trees: handle failure in verify_absent
  unpack-trees: fix path search bug in verify_absent
  unpack-trees: remove redundant path search in verify_absent

Johannes Schindelin (3):
  bisect view: call gitk if Cygwin's SESSIONNAME variable is set
  git add: do not add files from a submodule
  Rename diff.suppress-blank-empty to diff.suppressBlankEmpty

Junio C Hamano (1):
  format-patch: show patch text for the root commit

Lars Noschinski (1):
  shell: Document that 'cvs server' is a valid command

Paul Jarc (1):
  configure clobbers LDFLAGS

Philippe Bruhat (1):
  Git.pm: correctly handle directory name that evaluates to "false"

René Scharfe (1):
  shortlog: handle multi-line subjects like log --pretty=oneline et. al. do

Thomas Rast (3):
  diff: accept -- when using --no-index
  diff --no-index: test for pager after option parsing
  diff --no-index -q: fix endless loop


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

Arjen Laarhoven (1):
  t/t4202-log.sh: Add testcases

Björn Steinbrink (1):
  Rename detection: Avoid repeated filespec population

Brandon Casey (1):
  Makefile: use shell for-loop rather than Make's foreach loop during
    install

Jeff King (2):
  color: make it easier for non-config to parse color specs
  expand --pretty=format color options

Johannes Schindelin (3):
  Implement the patience diff algorithm
  Introduce the diff option '--patience'
  bash completions: Add the --patience option

Jonas Flodén (1):
  git-am: Make it easier to see which patch failed

Junio C Hamano (4):
  git-am: add --directory=<dir> option
  Teach format-patch to handle output directory relative to cwd
  git-am: fix shell quoting
  git-am: re-fix the diag message printing

Keith Cascio (2):
  test more combinations of ignore-whitespace options to diff
  Fix combined use of whitespace ignore options to diff

Linus Torvalds (1):
  Wrap inflate and other zlib routines for better error reporting

Markus Heidelberg (4):
  contrib/difftool: change trap condition from SIGINT to INT
  contrib/difftool: remove distracting 'echo' in the SIGINT handler
  use uppercase POSIX compliant signals for the 'trap' command
  bash completion: add 'rename' subcommand to git-remote

Ralf Wildenhues (1):
  Fix naming scheme for configure cache variables.

Ray Chuan (1):
  http-push: refactor lock-related headers creation for curl requests

René Scharfe (5):
  Add ctype test
  Reformat ctype.c
  Change NUL char handling of isspecial()
  Add is_regex_special()
  Optimize color_parse_mem

SZEDER Gábor (1):
  Fix gitdir detection when in subdir of gitdir

Santi Béjar (2):
  commit: more compact summary and without extra quotes
  tutorial-2: Update with the new "git commit" ouput

Stephan Beyer (5):
  checkout: don't crash on file checkout before running post-checkout hook
  Move run_hook() from builtin-commit.c into run-command.c (libgit)
  api-run-command.txt: talk about run_hook()
  run_hook(): check the executability of the hook before filling argv
  run_hook(): allow more than 9 hook arguments

Thomas Rast (2):
  bash completion: move pickaxe options to log
  bash completion: refactor diff options

martin f. krafft (1):
  git-am: implement --reject option passed to git-apply

^ permalink raw reply

* What's cooking in git.git (Jan 2009, #06; Sat, 24)
From: Junio C Hamano @ 2009-01-25  5:00 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 ones
marked with '.' do not appear in any of the branches, but I am still
holding onto them.

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

[jc: This message was actually prepared last night and reports the state
as of 23 hours ago, but then I got sick and I didn't manage to send it
out. I wasn't productive today, so it unfortunately reflects the current
status as well.]

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

* jg/mergetool (Sat Jan 24 00:12:45 2009 +0100) 1 commit
 - [wait for an ack from ted] mergetool: Don't repeat merge tool
   candidates

* cb/mergetool (Wed Jan 21 22:57:48 2009 +0000) 1 commit
 - [wait for ack from ted] mergetool: respect autocrlf by using
   checkout-index

* jc/commit-assume-also-during-merge (Thu Jan 22 22:21:49 2009 -0800) 3 commits
 - git commit: pathspec without -i/-o implies -i semantics during a
   merge
 - builtin-commit: shorten eye-sore overlong lines
 - Add "partial commit" tests during a conflicted merge

This is only meant as a weatherballoon to help facilitate discussion.

* sr/clone-empty (Fri Jan 23 01:07:32 2009 +0100) 1 commit
 + Allow cloning an empty repository

At last ;-)  This is a reasonable thing to do, and should be fast tracked
to 'master'.

* cc/replace (Fri Jan 23 10:07:46 2009 +0100) 7 commits
 - environment: add global variable to disable replacement
 - mktag: call "check_sha1_signature" with the replacement sha1
 - replace_object: add a test case
 - object: call "check_sha1_signature" with the replacement sha1
 - sha1_file: add a "read_sha1_file_repl" function
 - replace_object: add mechanism to replace objects found in
   "refs/replace/"
 - refs: add a "for_each_replace_ref" function

----------------------------------------------------------------
[Stalled and may need help and prodding to go forward]

* 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

This gives Porcelains (like gitweb) the information on the commit _before_
the one that the final blame is laid on, which should save them one
rev-parse to dig further.  The line number in the "previous" information
may need refining, and sanity checking code for reference counting may
need to be resurrected before this can move forward.

* db/foreign-scm (Sun Jan 11 15:12:10 2009 -0500) 3 commits
 - Support fetching from foreign VCSes
 - Add specification of git-vcs helpers
 - Add "vcs" config option in remotes

The "spec" did not seem quite well cooked yet, but in the longer term I
think something like this to allow interoperating with other SCMs as if
the other end is a native git repository is a very worthy goal.

----------------------------------------------------------------
[Reverted]

* mh/unify-color (Fri Jan 23 01:25:23 2009 -0800) 3 commits
 ? Revert previous two commits
 ? move the color variables to color.c
 ? handle color.ui at a central place

This broke git-format-patch badly.

----------------------------------------------------------------
[Actively cooking]

* js/valgrind (Wed Jan 21 02:36:40 2009 +0100) 2 commits
 - valgrind: ignore ldso errors
 - Add valgrind support in test scripts

Dscho seems to have some updates out of discussion with Peff, which is not
queued here.

* sp/runtime-prefix (Sun Jan 18 13:00:15 2009 +0100) 7 commits
 - Windows: Revert to default paths and convert them by
   RUNTIME_PREFIX
 - Compute prefix at runtime if RUNTIME_PREFIX is set
 - Modify setup_path() to only add git_exec_path() to PATH
 - Add calls to git_extract_argv0_path() in programs that call
   git_config_*
 - git_extract_argv0_path(): Move check for valid argv0 from caller
   to callee
 - Refactor git_set_argv0_path() to git_extract_argv0_path()
 - Move computation of absolute paths from Makefile to runtime (in
   preparation for RUNTIME_PREFIX)

We should move this to 'next' soon with J6t's blessing.

* lh/submodule-tree-traversal (Mon Jan 12 00:45:55 2009 +0100) 3 commits
 + builtin-ls-tree: enable traversal of submodules
 + archive.c: enable traversal of submodules
 + tree.c: add support for traversal of submodules

There were a few updates posted, which I haven't picked up.

* jk/signal-cleanup (Thu Jan 22 01:03:28 2009 -0500) 5 commits
 - pager: do wait_for_pager on signal death
 - refactor signal handling for cleanup functions
 - chain kill signals for cleanup functions
 - diff: refactor tempfile cleanup handling
 - Windows: Fix signal numbers

Ready for 'next', but not tonight (yet).

* ks/maint-mailinfo-folded (Tue Jan 13 01:21:04 2009 +0300) 5 commits
 - mailinfo: tests for RFC2047 examples
 - mailinfo: add explicit test for mails like '<a.u.thor@example.com>
   (A U Thor)'
 - mailinfo: more smarter removal of rfc822 comments from 'From'
 + mailinfo: 'From:' header should be unfold as well
 + mailinfo: correctly handle multiline 'Subject:' header

As far as I can see, the only remaining thing is a minor fix-up in the
"comment removal" one before we can move this fully to 'next'.

* js/notes (Tue Jan 13 20:57:16 2009 +0100) 6 commits
 + git-notes: fix printing of multi-line notes
 + notes: fix core.notesRef documentation
 + Add an expensive test for git-notes
 + Speed up git notes lookup
 + Add a script to edit/inspect notes
 + Introduce commit notes

It would be nice to hear a real world success story using the notes
mechanism; Dscho says he also wants to make sure the current choice
of the structure scales well before casting it in stone.

* sc/gitweb-category (Fri Dec 12 00:45:12 2008 +0100) 3 commits
 - gitweb: Optional grouping of projects by category
 - gitweb: Split git_project_list_body in two functions
 - gitweb: Modularized git_get_project_description to be more generic

Design discussion between Jakub and Sebastien continues.

----------------------------------------------------------------
[Graduated to "master"]

* js/patience-diff (Thu Jan 1 17:39:37 2009 +0100) 3 commits
 + bash completions: Add the --patience option
 + Introduce the diff option '--patience'
 + Implement the patience diff algorithm

----------------------------------------------------------------
[Will merge to "master" soon]

* kb/lstat-cache (Sun Jan 18 16:14:54 2009 +0100) 5 commits
 + lstat_cache(): introduce clear_lstat_cache() function
 + lstat_cache(): introduce invalidate_lstat_cache() function
 + lstat_cache(): introduce has_dirs_only_path() function
 + lstat_cache(): introduce has_symlink_or_noent_leading_path()
   function
 + lstat_cache(): more cache effective symlink/directory detection

* tr/previous-branch (Wed Jan 21 00:37:38 2009 -0800) 10 commits
 + Simplify parsing branch switching events in reflog
 + Introduce for_each_recent_reflog_ent().
 + interpret_nth_last_branch(): plug small memleak
 + Fix reflog parsing for a malformed branch switching entry
 + Fix parsing of @{-1}@{1}
 + interpret_nth_last_branch(): avoid traversing the reflog twice
 + checkout: implement "-" abbreviation, add docs and tests
 + sha1_name: support @{-N} syntax in get_sha1()
 + sha1_name: tweak @{-N} lookup
 + checkout: implement "@{-N}" shortcut name for N-th last branch

* js/maint-all-implies-HEAD (Sat Jan 17 22:27:08 2009 -0800) 2 commits
 + bundle: allow the same ref to be given more than once
 + revision walker: include a detached HEAD in --all

* cb/add-pathspec (Wed Jan 14 15:54:35 2009 +0100) 2 commits
 + remove pathspec_match, use match_pathspec instead
 + clean up pathspec matching

* js/diff-color-words (Tue Jan 20 22:59:54 2009 -0600) 9 commits
 + Change the spelling of "wordregex".
 + color-words: Support diff.wordregex config option
 + color-words: make regex configurable via attributes
 + color-words: expand docs with precise semantics
 + color-words: enable REG_NEWLINE to help user
 + color-words: take an optional regular expression describing words
 + color-words: change algorithm to allow for 0-character word
   boundaries
 + color-words: refactor word splitting and use ALLOC_GROW()
 + Add color_fwrite_lines(), a function coloring each line
   individually

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

* 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

* 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

* 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

* jk/valgrind (Thu Oct 23 04:30:45 2008 +0000) 2 commits
 . valgrind: ignore ldso errors
 . add valgrind support in test scripts

* wp/add-patch-find (Thu Nov 27 04:08:03 2008 +0000) 3 commits
 . In add --patch, Handle K,k,J,j slightly more gracefully.
 . Add / command in add --patch
 . git-add -i/-p: Change prompt separater from slash to comma

^ permalink raw reply

* Re: [PATCH 0/2] Add submodule-support to git archive
From: Nanako Shiraishi @ 2009-01-25  4:53 UTC (permalink / raw)
  To: Lars Hjemli; +Cc: Junio C Hamano, Johannes Schindelin, git
In-Reply-To: <1232844726-14902-1-git-send-email-hjemli@gmail.com>

Quoting Lars Hjemli <hjemli@gmail.com>:

> This is a cleaned up version of my previous patches which allows git archive
> to include submodule content in the archive output.
>
> The main difference between this series and the previous ones is that the
> behaviour of `git archive --submodules` are now predictable; the content
> included from submodules is defined by the gitlink entries found when
> traversing the <tree-ish> specified on the command line, and the set of
> submodules to include are defined by specifying either `--submodules=all` or
> `--submodules=checkedout` (which is the default mode of operation, i.e. what
> you get by only specifying `--submodules`).

I wanted to try this because I use submodules in a repository at my work, but your patches conflicted a lot with your previous series of patches that are already in the next branch of Junio's. What would I do to try this new series? Fork a branch from Junio's master branch, apply your new patches, and merge the result to Junio's next?

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

^ permalink raw reply

* Re: Heads up: major rebase -i -p rework coming up
From: Johannes Schindelin @ 2009-01-25  2:25 UTC (permalink / raw)
  To: Thomas Rast; +Cc: git, Stephen Haberman, spearce, Björn Steinbrink
In-Reply-To: <alpine.DEB.1.00.0901250303150.14855@racer>

Hi,

On Sun, 25 Jan 2009, Johannes Schindelin wrote:

> On Sat, 24 Jan 2009, Thomas Rast wrote:
> 
> > Johannes Schindelin wrote:
> > > Worse, the whole concept of "pick <merge-sha1>" just does not fly well.
> > [...]
> > > - merge $sha1 [$sha1...] was $sha1 "Merge ..."
> > > 
> > > 	will merge the given list of commits into the current HEAD, for 
> > > 	the user's reference and to keep up-to-date what was rewritten, the 
> > > 	original merge is shown after the keyword "was" (which is not a 
> > > 	valid SHA-1, luckily)
> > 
> > I really like the underlying idea.  I'm not even sure if the current 
> > semantics are well-defined in all cases; an explicit merge command at 
> > least makes it very clear what is going on.
> > 
> > However, I think the syntax as proposed above is a bit confusing in 
> > the usual two-parent merge.  I couldn't tell whether
> > 
> >   merge A was B
> > 
> > was intended to be read as "the merge of A into the current branch" or 
> > "the merge with sha1 A" right away, and I doubt I'll be able to tell 
> > without looking in the (rare) cases I have to invoke rebase -i -p.
> > 
> > I can't really come up with a better replacement for 'was', so how 
> > about
> > 
> >   merge A # was B "Merge..."
> > 
> > which would make it more clear that the "was B..." has no effect 
> > whatsoever on the merge's semantics.
> 
> Hmm.  You're right, that is not really intuitive.  How about
> 
> 	merge (B) A # Merge...
> 
> instead?

Or even better:

	merge B parent A' # Merge...

?

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