threads / discuss / 6968

git-remote and remotes with '.' in their names

Subject: git-remote and remotes with '.' in their names

## tl;dr

6 messages between Feb 26, 2007 and Feb 28, 2007.

replies: 5people: 4as markdown or json

Paul Collins· Feb 26, 2007, 07:36 UTC · lore

I just switched my remotes over to the git-remote way (which is very nice!) and was looking for a way to list all of the known remotes. git-remote with no arguments almost does it, but I get the following:

  [briny(linux-2.6)] git --version
  git version 1.5.0.1
  [briny(linux-2.6)] cat .git/config
  [core]
          repositoryformatversion = 0
          filemode = true
  [user]
          email = "paul@briny.ondioline.org"
  [remote "origin"]
          url = git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
          fetch = +refs/heads/*:refs/remotes/origin/*
  [remote "wireless-dev"]
          url = git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-dev.git
          fetch = +refs/heads/*:refs/remotes/wireless-dev/*
  [remote "stable-2.6.19"]
          url = git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.19.y.git
          fetch = +refs/heads/*:refs/remotes/stable-2.6.19/*
  [remote "stable-2.6.20"]
          url = git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.20.y.git
          fetch = +refs/heads/*:refs/remotes/stable-2.6.20/*
  [remote "wireless-2.6"]
          url = git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
          fetch = +refs/heads/*:refs/remotes/wireless-2.6/*
  [briny(linux-2.6)] git-remote
  origin
  stable-2
  wireless-2
  wireless-dev

With this patch I get the correct list, but then it will break if there are ever config keys like "remote.$remote_name.foo.bar".

--- git-remote~ 2007-02-26 01:15:33.000000000 +1300 +++ git-remote 2007-02-26 20:31:20.000000000 +1300

@@ -68,7 +68,7 @@
 		$git->command(qw(config --get-regexp), '^remote\.');
 	};
 	for (@remotes) {
-		if (/^remote\.([^.]*)\.(\S*)\s+(.*)$/) {
+		if (/^remote\.(.*)\.(\S*)\s+(.*)$/) {
 			add_remote_config(\%seen, $1, $2, $3);
 		}
 	}
-- 
Paul Collins
Wellington, New Zealand

Dag vijandelijk luchtschip de huismeester is dood
Jakub Narebski· Feb 26, 2007, 11:28 UTC · re: Paul Collins · lore

Re: git-remote and remotes with '.' in their names

Paul Collins wrote:
> With this patch I get the correct list, but then it will break if
> there are ever config keys like "remote.$remote_name.foo.bar".

I don't think there would ever be key (variable) names with dots in them; if I remember correctly we don't allow this now.

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Johannes Schindelin· Feb 26, 2007, 11:28 UTC · re: Paul Collins · lore

Re: git-remote and remotes with '.' in their names

Hi,
On Mon, 26 Feb 2007, Paul Collins wrote:
> With this patch I get the correct list, but then it will break if there 
> are ever config keys like "remote.$remote_name.foo.bar".

I think you do not need to worry. AFAIR variable names in the config must not contain dots, so the only way to set your example variable would be

[remote "$remote_name.foo"]
	bar = blabla

Ciao, Dscho

Paolo Bonzini· Feb 28, 2007, 14:55 UTC · re: Paul Collins · lore

Re: git-remote and remotes with '.' in their names

Hello,
>  	for (@remotes) {
> -		if (/^remote\.([^.]*)\.(\S*)\s+(.*)$/) {
> +		if (/^remote\.(.*)\.(\S*)\s+(.*)$/) {
You probably want either
+		if (/^remote\.(\S*)\.(\S*)\s+(.*)$/) {
or
+		if (/^remote\.(\S*)\.([^.]*)\s+(.*)$/) {
here.
Paolo
Johannes Schindelin· Feb 28, 2007, 15:10 UTC · re: Paolo Bonzini · lore

Re: git-remote and remotes with '.' in their names

Hi,
On Wed, 28 Feb 2007, Paolo Bonzini wrote:
Show 13 quoted lines
> Hello,
> 
> >  	for (@remotes) {
> > -		if (/^remote\.([^.]*)\.(\S*)\s+(.*)$/) {
> > +		if (/^remote\.(.*)\.(\S*)\s+(.*)$/) {
> 
> You probably want either
> 
> +		if (/^remote\.(\S*)\.(\S*)\s+(.*)$/) {
> 
> or
> 
> +		if (/^remote\.(\S*)\.([^.]*)\s+(.*)$/) {

Did you mean to prevent the remote starting with a dot? IMHO that would be a good change, but AFAIS both your proposals don't do that.

Ciao, Dscho

Paolo Bonzini· Feb 28, 2007, 15:14 UTC · re: Johannes Schindelin · lore

Re: git-remote and remotes with '.' in their names

Johannes Schindelin wrote:
Show 19 quoted lines
> Hi,
> 
> On Wed, 28 Feb 2007, Paolo Bonzini wrote:
> 
>> Hello,
>>
>>>  	for (@remotes) {
>>> -		if (/^remote\.([^.]*)\.(\S*)\s+(.*)$/) {
>>> +		if (/^remote\.(.*)\.(\S*)\s+(.*)$/) {
>> You probably want either
>>
>> +		if (/^remote\.(\S*)\.(\S*)\s+(.*)$/) {
>>
>> or
>>
>> +		if (/^remote\.(\S*)\.([^.]*)\s+(.*)$/) {
> 
> Did you mean to prevent the remote starting with a dot? IMHO that would be 
> a good change, but AFAIS both your proposals don't do that.

No, I meant to avoid the ".*" in Paul's proposal. They should be in practice equivalent but, with the second one, I made the regex more readable: it is clearer that the $3 variable is not meant to include dots.

Your proposal makes sense to me -- that would be
+		if (/^remote\.([^.]\S*)\.([^.]*)\s+(.*)$/) {
Paolo

← back to recent threads