Git development
 help / color / mirror / Atom feed
* Re: UI tweak suggestion for kernel.org git web gui.
From: Kay Sievers @ 2005-11-21 16:55 UTC (permalink / raw)
  To: Rob Landley; +Cc: git
In-Reply-To: <200511211019.51110.rob@landley.net>

On Mon, Nov 21, 2005 at 10:19:50AM -0600, Rob Landley wrote:
> When I view the changelog at:
> http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=shortlog
> 
> It mixes in tags, which is cool, but they're the same color as regular 
> commits.

They are all commits. There is nothing "mixed". Tags usually just point
to a commit.

> Is there any way that tags could stand out visually?  (Bold them, 
> give them a different color background, etc.)

You mean, you want to see in the list of commits, the ones marked, which
a tag is pointing to? Similar to what gitk is doing?

> I'd try to ask this in the right place, but the above page doesn't even say 
> which git web display package kernel.org is using.  (A small discreet link at 
> the bottom would be nice...)

There is no package for gitweb. Just the single gitweb.cgi file, which is
copied there. You can get the gitweb version in the html source. Just do
"view source" in your browser.

Kay

^ permalink raw reply

* Re: [RFC] git-format-patch options
From: Andreas Ericsson @ 2005-11-21 16:44 UTC (permalink / raw)
  To: git
In-Reply-To: <20051121162540.4722.qmail@web31812.mail.mud.yahoo.com>

Luben Tuikov wrote:
> It is often the case that "since <mine> head forked from
> <his> head" (quoting the manual page of git-format-patch),
> for various projects, some patches have been accepted and
> some have not.
> 
> I was wondering about the value of
> 
>   git-format-patch <commit-ish>
> 
> to output/prepare a diff patch between the indicated commit
> and its parent.  As opposed to the current behaviour giving
> all changes between the indicated commit and HEAD.
> 
> So in effect the form above would become the trivial:
> 
>   git-format-patch <commit-ish>..HEAD
> 
> and
> 
>   git-format-patch <commit-ish>
> 
> would give the diff patch between the indicated commit and
> its parent.
> 

Please don't. git-format-patch is generally used to send in a series of 
patches ranging back from HEAD, so this would mean less userfriendliness 
in the most usual case.

Here's the "sed -n 90,100p" commentary from git-format-patch:
----%<-----%<----
# Backward compatible argument parsing hack.
#
# Historically, we supported:
# 1. "rev1"     is equivalent to "rev1..HEAD"
# 2. "rev1..rev2"
# 3. "rev1" "rev2   is equivalent to "rev1..rev2"
#
# We want to take a sequence of "rev1..rev2" in general.
# Also, "rev1.." should mean "rev1..HEAD"; git-diff users are
# familiar with that syntax.
----%<-----%<----

Perhaps the man-page needs to be updated with this info.

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

^ permalink raw reply

* Re: [RFC 2/2] Automatically transform .git/{branches,remotes} into .git/config
From: Andreas Ericsson @ 2005-11-21 16:34 UTC (permalink / raw)
  To: git
In-Reply-To: <Pine.LNX.4.63.0511211653420.2569@wbgn013.biozentrum.uni-wuerzburg.de>

Johannes Schindelin wrote:
> 
> What do people say? Is it useless to move that information into the 
> config, where it can be queried/replaced/set/removed by the config "API", 

You're thinking the wrong way around. "Is it useless so we should 
refrain?" is not the same as "is it useful enough to do?".


> or should we continue with two incompatible ad-hoc formats? (If that 
> sounds biased, it was not meant to be.)
> 

I don't use Cogito myself so I'm not aware of what incompatibilities 
there are. However, it's a user-friendliness layer, so it can choose to 
do things differently if it wants to, but changing how the plumbing 
works to match the porcelain seems wrong to me.

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

^ permalink raw reply

* Re: [RFC 2/2] Automatically transform .git/{branches,remotes} into .git/config
From: Josef Weidendorfer @ 2005-11-21 16:25 UTC (permalink / raw)
  To: git
In-Reply-To: <Pine.LNX.4.63.0511211653420.2569@wbgn013.biozentrum.uni-wuerzburg.de>

On Monday 21 November 2005 16:57, Johannes Schindelin wrote:
> > The part about .git/branches has to be sent to Pasky, not Junio. 
> 
> I was aware that .git/branches was introduced by Pasky, but as it is 
> handled in git-parse-remote.sh, I thought that it may be a bit more 
> general than just cogito.

AFAIK, Cogito introduced it, and Git used it in the wrong way. All files
in .git/branches map 1:1 to a local head (perhaps not really existing).
Git misused this information by using a head name as shortcut for a
remote repository - which still leads to quite some confusion:
In repositories cloned by Cogito you now have a "origin" head, and
automatically have a repository shortcut "origin", too. The same name is
used for different kinds of objects - IMHO quite bad.

The best thing is to simply remove .git/branches parsing in git at all.
 
> Anyways, I sent this out as an *RFC*, but the "C" obviously stands for 
> "Comments"...

I think that putting .git/remotes info into .git/config is nice.
And I also think that putting .git/branches info into .git/config is a nice
thing.
If .git/branches/origin contains "http://www.kernel.org/pub/scm/git/git.git#todo",
this should map to

[head.origin]
  fetchurl = http://www.kernel.org/pub/scm/git/git.git
  fetchhead = todo

The problem here is that heads can have spaces, "." and "/" in their name.

> What do people say? Is it useless to move that information into the 
> config, where it can be queried/replaced/set/removed by the config "API", 
> or should we continue with two incompatible ad-hoc formats? (If that 
> sounds biased, it was not meant to be.)

Cogito does not have per-repository configuration (e.g. like this "shortcut"
thing), but only about per-head configuration. In this way, the information
in .git/branches is quite different from the one in .git/remotes.

Josef

> 
> Ciao,
> Dscho
> 
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

^ permalink raw reply

* [RFC] git-format-patch options
From: Luben Tuikov @ 2005-11-21 16:25 UTC (permalink / raw)
  To: git

It is often the case that "since <mine> head forked from
<his> head" (quoting the manual page of git-format-patch),
for various projects, some patches have been accepted and
some have not.

I was wondering about the value of

  git-format-patch <commit-ish>

to output/prepare a diff patch between the indicated commit
and its parent.  As opposed to the current behaviour giving
all changes between the indicated commit and HEAD.

So in effect the form above would become the trivial:

  git-format-patch <commit-ish>..HEAD

and

  git-format-patch <commit-ish>

would give the diff patch between the indicated commit and
its parent.

?

    Luben

^ permalink raw reply

* UI tweak suggestion for kernel.org git web gui.
From: Rob Landley @ 2005-11-21 16:19 UTC (permalink / raw)
  To: git

When I view the changelog at:
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=shortlog

It mixes in tags, which is cool, but they're the same color as regular 
commits.  Is there any way that tags could stand out visually?  (Bold them, 
give them a different color background, etc.)

I'd try to ask this in the right place, but the above page doesn't even say 
which git web display package kernel.org is using.  (A small discreet link at 
the bottom would be nice...)

Rob

^ permalink raw reply

* [BUG] cg-mkpatch uses non-portable "tac" command
From: Randal L. Schwartz @ 2005-11-21 16:10 UTC (permalink / raw)
  To: git


cg-mkpatch uses "tac" to reverse some lines.  This is not a POSIX command.

Since you already presume Perl, you can replace the use of tac with:

        | perl -e 'print reverse <>' |

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

^ permalink raw reply

* Re: [RFC 2/2] Automatically transform .git/{branches,remotes} into .git/config
From: Johannes Schindelin @ 2005-11-21 15:57 UTC (permalink / raw)
  To: Josef Weidendorfer; +Cc: git
In-Reply-To: <200511211644.16789.Josef.Weidendorfer@gmx.de>

Hi,

On Mon, 21 Nov 2005, Josef Weidendorfer wrote:

> On Monday 21 November 2005 14:56, Johannes Schindelin wrote:
> > With this patch, git automatically extracts the information from 
> > .git/branches and .git/remotes, puts it into .git/config, and renames the 
> > directories to .git/branches.old and .git/remotes.old, respectively.
> 
> Please... don't trash .git/branches.
> This is about Cogito, not about Git. You will render every repository cloned
> with Cogito useless, as it expects a per-branch configuration with the same
> name as heads.
> 
> The part about .git/branches has to be sent to Pasky, not Junio. 

I was aware that .git/branches was introduced by Pasky, but as it is 
handled in git-parse-remote.sh, I thought that it may be a bit more 
general than just cogito.

Anyways, I sent this out as an *RFC*, but the "C" obviously stands for 
"Comments"...

What do people say? Is it useless to move that information into the 
config, where it can be queried/replaced/set/removed by the config "API", 
or should we continue with two incompatible ad-hoc formats? (If that 
sounds biased, it was not meant to be.)

Ciao,
Dscho

^ permalink raw reply

* Re: [RFC 2/2] Automatically transform .git/{branches,remotes} into .git/config
From: Josef Weidendorfer @ 2005-11-21 15:44 UTC (permalink / raw)
  To: git
In-Reply-To: <Pine.LNX.4.63.0511211455120.13775@wbgn013.biozentrum.uni-wuerzburg.de>

On Monday 21 November 2005 14:56, Johannes Schindelin wrote:
> With this patch, git automatically extracts the information from 
> .git/branches and .git/remotes, puts it into .git/config, and renames the 
> directories to .git/branches.old and .git/remotes.old, respectively.

Please... don't trash .git/branches.
This is about Cogito, not about Git. You will render every repository cloned
with Cogito useless, as it expects a per-branch configuration with the same
name as heads.

The part about .git/branches has to be sent to Pasky, not Junio. 

Josef

^ permalink raw reply

* Re: cvsimport and RTAI repository
From: llandre @ 2005-11-21 15:42 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git
In-Reply-To: <Pine.LNX.4.63.0511211625300.23247@wbgn013.biozentrum.uni-wuerzburg.de>

Hi Johannes,

thanks for your advice but unfortunately it did not work :(

> Hi,
> 
> On Mon, 21 Nov 2005, llandre wrote:
> 
> 
>>cvs [rlog aborted]: received abort signal
>>[...]
> 
> 
> Maybe rlog does not work here... Have you tried
> 
> 	git-cvsimport -p --no-rlog ...
> 
> ? This passes the option --no-rlog to cvsps which helped me once.



-- 
llandre

DAVE Electronics System House - R&D Department
web:   http://www.dave-tech.it
email: r&d2@dave-tech.it

^ permalink raw reply

* Re: cvsimport and RTAI repository
From: Johannes Schindelin @ 2005-11-21 15:27 UTC (permalink / raw)
  To: llandre; +Cc: git
In-Reply-To: <4381E565.4020108@dave-tech.it>

Hi,

On Mon, 21 Nov 2005, llandre wrote:

> cvs [rlog aborted]: received abort signal
> [...]

Maybe rlog does not work here... Have you tried

	git-cvsimport -p --no-rlog ...

? This passes the option --no-rlog to cvsps which helped me once.

Hth,
Dscho

^ permalink raw reply

* cvsimport and RTAI repository
From: llandre @ 2005-11-21 15:19 UTC (permalink / raw)
  To: git

Hi all,

I'm trying to cvsimport vulcano module of rtai CVS repository at 
cvs.gna.org. Unfortunately it does not work: git-cvsimport hangs after 
printing the messages below. git version is 0.99.9.GIT. Anybody can help me?

Thanks a lot in advance.



[llandre@linuxserver rtai]$ git-cvsimport -v -d 
:pserver:anonymous@cvs.gna.org:/cvs/rtai -C vulcano vulcano
cvs_direct initialized to CVSROOT /cvs/rtai
cvs rlog: Logging vulcano
cvs [rlog aborted]: received abort signal
cvs: lock.c:178: lock_name: Assertion `(__extension__ 
(__builtin_constant_p (strlen (current_parsed_root->directory)) && 
((__builtin_constant_p (repository) && strlen (repository) < ((size_t) 
(strlen (current_parsed_root->directory)))) || (__builtin_constant_p 
(current_parsed_root->directory) && strlen 
(current_parsed_root->directory) < ((size_t) (strlen 
(current_parsed_root->directory))))) ? __extension__ ({ size_t __s1_len, 
__s2_len; (__builtin_constant_p (repository) && __builtin_constant_p 
(current_parsed_root->directory) && (__s1_len = strlen (repository), 
__s2_len = strlen (current_parsed_root->directory), (!((size_t)(const 
void *)((repository) + 1) - (size_t)(const void *)(repository) == 1) || 
__s1_len >= 4) && (!((size_t)(const void 
*)((current_parsed_root->directory) + 1) - (size_t)(const void 
*)(current_parsed_root->directory) == 1) || __s2_len >= 4)) ? memcmp 
((__const char *) (repository), (__const char *) 
(current_parsed_root->directory), (__s1_len < __s2_len ? __s1_len : 
__s2_len) + 1) : (__builtin_constant_p (repository) && ((size_t)(const 
void *)((repository) + 1) - (size_t)(const void *)(repository) == 1) && 
(__s1_len = strlen (repository), __s1_len < 4) ? (__builtin_constant_p 
(current_parsed_root->directory) && ((size_t)(const void 
*)((current_parsed_root->directory) + 1) - (size_t)(const void 
*)(current_parsed_root->directory) == 1) ? (__extension__ ({ register 
int __result = (((__const unsigned char *) (__const char *) 
(repository))[0] - ((__const unsigned char *) (__const char 
*)(current_parsed_root->directory))[0]); if (__s1_len > 0 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[1] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[1]); if (__s1_len > 1 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[2] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[2]); if (__s1_len > 2 && __result == 
0) __result = (((__const unsigned char *) (__const char *) 
(repository))[3] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[3]); } } __result; })) : 
(__extension__ ({ __const unsigned char *__s2 = (__const unsigned char 
*) (__const char *) (current_parsed_root->directory); register int 
__result = (((__const unsigned char *) (__const char *) (repository))[0] 
- __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const 
unsigned char *) (__const char *) (repository))[1] - __s2[1]); if 
(__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) 
(__const char *) (repository))[2] - __s2[2]); if (__s1_len > 2 && 
__result == 0) __result = (((__const unsigned char *) (__const char *) 
(repository))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p 
(current_parsed_root->directory) && ((size_t)(const void 
*)((current_parsed_root->directory) + 1) - (size_t)(const void 
*)(current_parsed_root->directory) == 1) && (__s2_len = strlen 
(current_parsed_root->directory), __s2_len < 4) ? (__builtin_constant_p 
(repository) && ((size_t)(const void *)((repository) + 1) - 
(size_t)(const void *)(repository) == 1) ? (__extension__ ({ register 
int __result = (((__const unsigned char *) (__const char *) 
(repository))[0] - ((__const unsigned char *) (__const char 
*)(current_parsed_root->directory))[0]); if (__s2_len > 0 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[1] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[1]); if (__s2_len > 1 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[2] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[2]); if (__s2_len > 2 && __result == 
0) __result = (((__const unsigned char *) (__const char *) 
(repository))[3] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[3]); } } __result; })) : 
(__extension__ ({ __const unsigned char *__s1 = (__const unsigned char 
*) (__const char *) (repository); register int __result = __s1[0] - 
((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[0]; if (__s2_len > 0 && __result == 0) 
{ __result = (__s1[1] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[1]); if (__s2_len > 1 && __result == 
0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[2]); if (__s2_len > 2 && __result == 
0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[3]); } } __result; }))) : strcmp 
(repository, current_parsed_root->directory)))); }) : strncmp 
(repository, current_parsed_root->directory, strlen 
(current_parsed_root->directory)))) == 0' failed.
cvs [rlog aborted]: received abort signal
cvs: lock.c:178: lock_name: Assertion `(__extension__ 
(__builtin_constant_p (strlen (current_parsed_root->directory)) && 
((__builtin_constant_p (repository) && strlen (repository) < ((size_t) 
(strlen (current_parsed_root->directory)))) || (__builtin_constant_p 
(current_parsed_root->directory) && strlen 
(current_parsed_root->directory) < ((size_t) (strlen 
(current_parsed_root->directory))))) ? __extension__ ({ size_t __s1_len, 
__s2_len; (__builtin_constant_p (repository) && __builtin_constant_p 
(current_parsed_root->directory) && (__s1_len = strlen (repository), 
__s2_len = strlen (current_parsed_root->directory), (!((size_t)(const 
void *)((repository) + 1) - (size_t)(const void *)(repository) == 1) || 
__s1_len >= 4) && (!((size_t)(const void 
*)((current_parsed_root->directory) + 1) - (size_t)(const void 
*)(current_parsed_root->directory) == 1) || __s2_len >= 4)) ? memcmp 
((__const char *) (repository), (__const char *) 
(current_parsed_root->directory), (__s1_len < __s2_len ? __s1_len : 
__s2_len) + 1) : (__builtin_constant_p (repository) && ((size_t)(const 
void *)((repository) + 1) - (size_t)(const void *)(repository) == 1) && 
(__s1_len = strlen (repository), __s1_len < 4) ? (__builtin_constant_p 
(current_parsed_root->directory) && ((size_t)(const void 
*)((current_parsed_root->directory) + 1) - (size_t)(const void 
*)(current_parsed_root->directory) == 1) ? (__extension__ ({ register 
int __result = (((__const unsigned char *) (__const char *) 
(repository))[0] - ((__const unsigned char *) (__const char 
*)(current_parsed_root->directory))[0]); if (__s1_len > 0 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[1] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[1]); if (__s1_len > 1 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[2] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[2]); if (__s1_len > 2 && __result == 
0) __result = (((__const unsigned char *) (__const char *) 
(repository))[3] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[3]); } } __result; })) : 
(__extension__ ({ __const unsigned char *__s2 = (__const unsigned char 
*) (__const char *) (current_parsed_root->directory); register int 
__result = (((__const unsigned char *) (__const char *) (repository))[0] 
- __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const 
unsigned char *) (__const char *) (repository))[1] - __s2[1]); if 
(__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) 
(__const char *) (repository))[2] - __s2[2]); if (__s1_len > 2 && 
__result == 0) __result = (((__const unsigned char *) (__const char *) 
(repository))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p 
(current_parsed_root->directory) && ((size_t)(const void 
*)((current_parsed_root->directory) + 1) - (size_t)(const void 
*)(current_parsed_root->directory) == 1) && (__s2_len = strlen 
(current_parsed_root->directory), __s2_len < 4) ? (__builtin_constant_p 
(repository) && ((size_t)(const void *)((repository) + 1) - 
(size_t)(const void *)(repository) == 1) ? (__extension__ ({ register 
int __result = (((__const unsigned char *) (__const char *) 
(repository))[0] - ((__const unsigned char *) (__const char 
*)(current_parsed_root->directory))[0]); if (__s2_len > 0 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[1] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[1]); if (__s2_len > 1 && __result == 
0) { __result = (((__const unsigned char *) (__const char *) 
(repository))[2] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[2]); if (__s2_len > 2 && __result == 
0) __result = (((__const unsigned char *) (__const char *) 
(repository))[3] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[3]); } } __result; })) : 
(__extension__ ({ __const unsigned char *__s1 = (__const unsigned char 
*) (__const char *) (repository); register int __result = __s1[0] - 
((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[0]; if (__s2_len > 0 && __result == 0) 
{ __result = (__s1[1] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[1]); if (__s2_len > 1 && __result == 
0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[2]); if (__s2_len > 2 && __result == 
0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) 
(current_parsed_root->directory))[3]); } } __result; }))) : strcmp 
(repository, current_parsed_root->directory)))); }) : strncmp 
(repository, current_parsed_root->directory, strlen 
(current_parsed_root->directory)))) == 0' failed.



-- 
llandre

DAVE Electronics System House - R&D Department
web:   http://www.dave-tech.it
email: r&d2@dave-tech.it

^ permalink raw reply

* cvsexportcommit/cvsimport workflow
From: Alexander Litvinov @ 2005-11-21 14:43 UTC (permalink / raw)
  To: Git Mailing List

Hello,

Can ypu please explain how to use cvsimport with cvsexportcommit scripts ? 

I have tried these steps:
1. Make git repo from cvs repo using cvsimport command - everything works 
great.
2. Start traking cvs changes by incremental running cvsimport - It works.
3. Change files in git repo (master branch) - works :-)
4. Export git commits to cvs: 
      first question: What should be exported and in what order ? Lets skip 
this part - it is the smallest problem.
      Two test commits were exported to cvs without any problmes.
5. Importing cvs again - I have found my exported commits became separate 
commits in git repo in origin branch (solved by git-pull . origin). But thay 
were merged idealy.
6. Changing files again in git.
7. Export git commits to cvs: What should be exported question become harder 
and harder. Possible I should use some tag and run:
git-rev-list MY-TAG..master | xargs -n 1 git-cvsexportcommit -vX -cX (by the 
way, why just -v -c does not work ? I must add something to make options 
work)

This cycle is a bit of mess. I can write some scripts but I have no idea how 
this is supposed to work !

The biggest problem - conflict. I should resove them twice, during merging 
origin branch to master and when exporting these changes to cvs. By the way, 
I still can't export merge commit :-)

Thanks for help.
Alexander Litvinov.

^ permalink raw reply

* Re: [PATCH] merge-one-file: remove empty directories
From: Alex Riesen @ 2005-11-21 14:22 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Linus Torvalds, Junio C Hamano, Christoph Hellwig, Paul Mackerras,
	linuxppc64-dev, Git Mailing List, Fredrik Kuivinen
In-Reply-To: <4380BB97.7070407@zytor.com>

On 11/20/05, H. Peter Anvin <hpa@zytor.com> wrote:
> Linus Torvalds wrote:
> >
> > Even VMS seems to have it (although if git is ever ported to VMS, I'll
> > just have to shoot myself. I used VMS in -88, and the scars are _still_
> > fresh).
> >
>
> Yeah, well, WinNT is basically the successor to VMS.  (I have heard from
> several ex-DECers that WNT was done on top of a stolen copy of what was
> supposed-to-have-been the successor to VMS.)

...and yes, the users of NT are almost ready to shoot themselves.

^ permalink raw reply

* default update hook broken
From: Matthew Wilcox @ 2005-11-21 14:09 UTC (permalink / raw)
  To: git; +Cc: Linus Torvalds


There's two syntax errors and one good-netizen error in the hooks/update
file created when cloning Linus' linux-2.6.git repo.  I don't know
if that file is created fresh or if it gets pulled from Linus' tree.
Here's a patch to fix it

--- .git/hooks/update	2005-11-21 06:31:51.000000000 -0700
+++ /home/willy/replacement-update	2005-11-21 07:01:37.000000000 -0700
@@ -8,14 +8,14 @@
 # (2) make this file executable by "chmod +x update".
 #
 
-recipient="commit-list@mydomain.xz"
+recipient="commit-list@example.com"
 
 if expr "$2" : '0*$' >/dev/null
 then
 	echo "Created a new ref, with the following commits:"
 	git-rev-list --pretty "$3"
 else
-	$base=$(git-merge-base "$2" "$3")
+	base=$(git-merge-base "$2" "$3")
 	case "$base" in
 	"$2")
 		echo "New commits:"
@@ -24,8 +24,7 @@
 		echo "Rebased ref, commits from common ancestor:"
 		;;
 	esac
-fi
-git-rev-list --pretty "$3" "^$base"
+	git-rev-list --pretty "$3" "^$base"
 fi |
 mail -s "Changes to ref $1" "$recipient"
 exit 0

^ permalink raw reply

* [RFC 2/2] Automatically transform .git/{branches,remotes} into .git/config
From: Johannes Schindelin @ 2005-11-21 13:56 UTC (permalink / raw)
  To: git


With this patch, git automatically extracts the information from 
.git/branches and .git/remotes, puts it into .git/config, and renames the 
directories to .git/branches.old and .git/remotes.old, respectively.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>

---

 git-parse-remote.sh |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

applies-to: 239817500e3556e8541d3b2b8257802c10da85c2
69062e3473f9f3cafe33954d9b995da89f6d9898
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index cd976da..0d603ac 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -2,6 +2,59 @@
 
 . git-sh-setup
 
+if [ -d "$GIT_DIR"/branches ]; then
+	echo "Rewriting $GIT_DIR/branches" >&2
+	error=0
+	# rewrite into config
+	{
+		cd "$GIT_DIR"/branches
+		ls | while read f; do
+			name=$(echo -n "$f" | tr -c "A-Za-z0-9" ".")
+			sed \
+			-e "s/^/remote.$name.url /" \
+			-e "s/#\(.*\)$/\nremote.$name.pull \1/" \
+			< "$f"
+		done
+		echo done
+	} | while read key value; do
+		case $key in
+		done)
+			if [ $error = 0 ]; then
+				mv "$GIT_DIR"/branches "$GIT_DIR"/branches.old
+			fi ;;
+		*)
+			git-config-set $key "$value" || error=1 ;;
+		esac
+	done
+fi
+
+if [ -d "$GIT_DIR"/remotes ]; then
+	echo "Rewriting $GIT_DIR/remotes" >&2
+	error=0
+	# rewrite into config
+	{
+		cd "$GIT_DIR"/remotes
+		ls | while read f; do
+			name=$(echo -n "$f" | tr -c "A-Za-z0-9" ".")
+			sed -n \
+			-e "s/^URL: /remote.$name.url . /p" \
+			-e "s/^Pull: /remote.$name.pull ^$ /p" \
+			-e "s/^Push: /remote.$name.push ^$ /p" \
+			< "$f"
+		done
+		echo done
+	} | while read key regex value; do
+		case $key in
+		done)
+			if [ $error = 0 ]; then
+				mv "$GIT_DIR"/remotes "$GIT_DIR"/remotes.old
+			fi ;;
+		*)
+			git-config-set $key "$value" $regex || error=1 ;;
+		esac
+	done
+fi
+
 get_data_source () {
 	case "$1" in
 	*/*)
---
0.99.9.GIT

^ permalink raw reply related

* [RFC 1/2] Use remote information in .git/config
From: Johannes Schindelin @ 2005-11-21 13:54 UTC (permalink / raw)
  To: git


This patch allows to store shortcuts for fetch/pull into the config:

	[remote.junio]
		url = http://www.kernel.org/pub/scm/git/git.git
		pull = master:junio
		pull = todo:todo
		pull = +pu:pu

Note that there is only one pair per "pull" line, to allow for spaces
(urgh!) in the branch names.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>

---

	The different pull/push lines are identified by their branch name. 
	So, to update the pull line for "todo" to force fast forward, do

		git-config-set remote.junio.pull +todo:todo '^todo:'

 git-parse-remote.sh |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

applies-to: 25c461c5c50b9d8c6cd836ca6a9df12f03f29621
b0542d077b7bf6ee8b45854e47dcba73170c1e9a
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index aea7b0e..cd976da 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -22,6 +22,9 @@ get_data_source () {
 		elif test -f "$GIT_DIR/branches/$1"
 		then
 			echo branches
+		elif test "$(git-config-set --get remote.$1.url)"
+		then
+			echo config
 		else
 			echo ''
 		fi ;;
@@ -46,6 +49,9 @@ get_remote_url () {
 		url=$(sed -e 's/#.*//' "$GIT_DIR/branches/$token")
 		echo "$url/$remainder"
 		;;
+	config)
+		git-config-set --get remote.$1.url
+		;;
 	*)
 		die "internal error: get-remote-url $1" ;;
 	esac
@@ -60,6 +66,8 @@ get_remote_default_refs_for_push () {
 		sed -ne '/^Push: */{
 			s///p
 		}' "$GIT_DIR/remotes/$1" ;;
+	config)
+		git-config-set --get-all remote.$1.push ;;
 	*)
 		die "internal error: get-remote-default-ref-for-push $1" ;;
 	esac
@@ -124,6 +132,8 @@ get_remote_default_refs_for_fetch () {
 						s///p
 					}' "$GIT_DIR/remotes/$1")
 		;;
+	config)
+		git-config-set --get-all remote.$1.pull ;;
 	*)
 		die "internal error: get-remote-default-ref-for-push $1" ;;
 	esac
---
0.99.9.GIT

^ permalink raw reply related

* [RFC 0/2] Store remote information in .git/config
From: Johannes Schindelin @ 2005-11-21 13:52 UTC (permalink / raw)
  To: git

Hi,

these two patches implement the migration of remote information into the 
config file. They need the patch I sent out earlier to allow hierarchical
section names (i.e. names containing dots). A config file can look like 
this:

	[remote.junio]
		url = http://www.kernel.org/pub/scm/git/git.git
		pull = master:junio
		pull = todo:todo
		pull = +pu:pu

The second patch makes git automatically migrate existing remote 
information into the config file.

Ciao,
Dscho

^ permalink raw reply

* Pure renames/copies
From: Santi Béjar @ 2005-11-21 12:01 UTC (permalink / raw)
  To: Git Mailing List

Hello:


        Is there any way to ask git to find pure renames or copies?

        I ask this because it is a much cheaper operation than the -C
        and -M do (-M100 does not work) and can be used when the number
        of paths if big, or when you track binary files.

        Thanks

        Santi

^ permalink raw reply

* diff-tree and does not respect grafts
From: Santi Béjar @ 2005-11-21 11:54 UTC (permalink / raw)
  To: Git Mailing List

Hello:

        diff-tree decode directly the commit, so it does not take into
        account the graft file. Is this the expected behaviour?

        Santi

^ permalink raw reply

* Re: [PATCH] Make git-pack-redundant take a list of unimportant objs on   stdin
From: Lukas Sandström @ 2005-11-21 11:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Lukas Sandström, Git Mailing List
In-Reply-To: <437E530E.1020803@etek.chalmers.se>

Lukas Sandström wrote:
> This lets us do "git-fsck-objects --full --unreachable | cut -d ' ' -f3 |
> git-pack-redundant --all", which will keep git-pack-redundant from keeping
> packs just because they contain unreachable objects.
> 
> Also add some more --verbose output.
> 
> Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
> 

The patch which documents this feature was committed (9a888b758f48d88d1e83c9765e33d4452710d5a5),
but not the feature. Did you just miss the patch, or is there something wrong with it?

/Lukas

^ permalink raw reply

* Re: [PATCH 5/5] git-daemon support for user-relative paths.
From: Andreas Ericsson @ 2005-11-21 11:10 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vfypquz88.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano wrote:
> Andreas Ericsson <ae@op5.se> writes:
> 
> 
>>I'll run the clone/fetch/push test-suite again tomorrow, with this 
>>applied. It looks good though.
> 
> 
> Sorry, but there was a thinko in my butchered version of
> enter_repo().  While allowing only absolute path was good for
> the version with your daemon.c change, it was not with the
> current one that runs upload-pack with "." as repo.  In either
> case we _do_ chdir() to it after validating the path, so I am
> wondering if it is a good idea to keep sending "." as repo when
> executing upload-pack with this patch as well.

It might be, and it's good since it prevents the otherwise possible race 
that occurs when git-upload-pack chdir()'s again.

>  This does not
> make any practical difference, but I think it makes the intent
> clearer -- "we are already there so do not try going anywhere
> else".
> 

So enter_repo allows "." (exactly and without chdir()) and all paths 
starting with '/' if strict?

> So I am thinking about applying something like this patch
> on top of the last part of your patch.
> 
>  - Do validation only on canonicalized paths;
>  - Run upload-pack with "." as repo, not full path;
>  - allow trailing slash under --strict-paths i.e. "git://host/my/repo.git/"
> 
> What do you think?
> 

Apart from comments and indentation it's more or less exactly what I 
have in my revised git-daemon patch (although without what you mentioned 
in your own reply to this mail).

Do you want the revised one from me or will you apply the original with 
this on top?

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

^ permalink raw reply

* [PATCH] git-config-set: Properly terminate strings with '\0'
From: Johannes Schindelin @ 2005-11-21 10:18 UTC (permalink / raw)
  To: git, junkio


When a lowercase version of the key was generated, it was not
terminated. Strangely enough, it worked on Linux and macosx anyway.
Just cygwin barfed.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>

---

 config-set.c |    1 +
 config.c     |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

applies-to: f7083280a1a5b84bbf5c6e74177e21807d5ee56b
6da767ad3f7ca0c1e86e7ec42765fcb01417d695
diff --git a/config-set.c b/config-set.c
index 5f654f7..d938f96 100644
--- a/config-set.c
+++ b/config-set.c
@@ -38,6 +38,7 @@ static int get_value(const char* key_, c
 	key = malloc(strlen(key_)+1);
 	for (i = 0; key_[i]; i++)
 		key[i] = tolower(key_[i]);
+	key[i] = 0;
 
 	if (regex_) {
 		if (regex_[0] == '!') {
diff --git a/config.c b/config.c
index 38c0edd..357c1ca 100644
--- a/config.c
+++ b/config.c
@@ -433,6 +433,7 @@ int git_config_set_multivar(const char* 
 			return 1;
 		} else
 			store.key[i] = tolower(key[i]);
+	store.key[i] = 0;
 
 	/*
 	 * The lock_file serves a purpose in addition to locking: the new
---
0.99.9.GIT

^ permalink raw reply related

* Re: [PATCH 5/5] git-daemon support for user-relative paths.
From: Junio C Hamano @ 2005-11-21  9:49 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vfypquz88.fsf@assigned-by-dhcp.cox.net>

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

> ...So I am thinking about applying something like this patch
> on top of the last part of your patch.
>
>  - Do validation only on canonicalized paths;
>  - Run upload-pack with "." as repo, not full path;
>  - allow trailing slash under --strict-paths i.e. "git://host/my/repo.git/"

Sorry, the last piece was totally unneeded; we are operating on
return value from getcwd at this point.

^ permalink raw reply

* Re: Rss produced by git is not valid xml?
From: H. Peter Anvin @ 2005-11-21  9:28 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Kay Sievers, Ismail Donmez, git
In-Reply-To: <Pine.LNX.4.63.0511210937500.3931@wbgn013.biozentrum.uni-wuerzburg.de>

Johannes Schindelin wrote:
> Hi,
> 
> On Sun, 20 Nov 2005, H. Peter Anvin wrote:
> 
> 
>>Johannes Schindelin wrote:
>>
>>>BTW, utf-8 was designed on purpose to be easily distinguishable from 
>>>other encodings so that you don't have to rely on every document 
>>>obeying a certain encoding.
>>>
>>
>>No, it wasn't.  It was designated on purpose to be ASCII-compatible,
>>substring-safe, and minimally stateful.
> 
> 
> For the record, my information stems from
> 
> http://en.wikipedia.org/wiki/Utf-8#Rationale_behind_UTF-8.27s_mechanics
> 

That article is a bit confusing, as it mixes rationale with commentary.

	-hpa

^ 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