git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Best way to specify all local branches and all remote branches.
@ 2008-02-11 18:51 Paul Gardiner
  2008-02-11 19:10 ` Jakub Narebski
  0 siblings, 1 reply; 6+ messages in thread
From: Paul Gardiner @ 2008-02-11 18:51 UTC (permalink / raw)
  To: git

New to git, and often finding it hard to specify the correct
refs for a command. Here's an example where I was converting
all the files in all the commits from unix line endings to
DOS line endings. You can see I've ended up using cd and ls.
I'm sure there must be a better way.

$ cd /home/public/tmp/git/
$ yes |rm -r vdos32
$ git clone /export/git/vdos32.git vdos32
$ cd vdos32/
$ for f in `(cd /export/git/vdos32.git/refs/heads; ls)|sed -e
    '/master/d' -e '/origin/d'`; do git fetch origin $f:$f; done
$ git-filter-branch --tag-name-filter cat --tree-filter 'find . -type f
    ! -name \*.gif ! -name \*.ico|xargs unix2dos -q' `(cd
    .git/refs/heads;ls)`



With git-filter-branch, I'm surprised I can't use --all.
The docs suggest that A --not B is permitted. I've
also seen refs/heads/* used in the docs but never
managed to get it to work. Most greatful for any
advice.

P.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Best way to specify all local branches and all remote branches.
  2008-02-11 18:51 Best way to specify all local branches and all remote branches Paul Gardiner
@ 2008-02-11 19:10 ` Jakub Narebski
  2008-02-11 19:40   ` Paul Gardiner
  2008-02-11 20:23   ` Johannes Schindelin
  0 siblings, 2 replies; 6+ messages in thread
From: Jakub Narebski @ 2008-02-11 19:10 UTC (permalink / raw)
  To: Paul Gardiner; +Cc: git

Paul Gardiner <osronline@glidos.net> writes:

> New to git, and often finding it hard to specify the correct
> refs for a command. Here's an example where I was converting
> all the files in all the commits from unix line endings to
> DOS line endings. You can see I've ended up using cd and ls.
> I'm sure there must be a better way.

git-for-each-ref, git-show-ref, git-ls-remote / git-peek-remote.
 
> $ cd /home/public/tmp/git/
> $ yes |rm -r vdos32
> $ git clone /export/git/vdos32.git vdos32
> $ cd vdos32/
> $ for f in `(cd /export/git/vdos32.git/refs/heads; ls)|sed -e
>     '/master/d' -e '/origin/d'`; do git fetch origin $f:$f; done
> $ git-filter-branch --tag-name-filter cat --tree-filter 'find . -type f
>     ! -name \*.gif ! -name \*.ico|xargs unix2dos -q' `(cd
>     .git/refs/heads;ls)`

If you want to fetch all branches, you can specify globbing refspec;
of course if you use separate remotes layout, or mirror layout.

If you want to pass all branches to git command, usually --all would
be enough (sometimes --heads).
 
> With git-filter-branch, I'm surprised I can't use --all.

git-filter-branch is about single branch; I'm not sure if it should
support --all.

-- 
Jakub Narebski
Poland
ShadeHawk on #git

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Best way to specify all local branches and all remote branches.
  2008-02-11 19:10 ` Jakub Narebski
@ 2008-02-11 19:40   ` Paul Gardiner
  2008-02-11 20:23   ` Johannes Schindelin
  1 sibling, 0 replies; 6+ messages in thread
From: Paul Gardiner @ 2008-02-11 19:40 UTC (permalink / raw)
  To: git

Jakub Narebski wrote:
> Paul Gardiner <osronline@glidos.net> writes:
> 
>> New to git, and often finding it hard to specify the correct
>> refs for a command. Here's an example where I was converting
>> all the files in all the commits from unix line endings to
>> DOS line endings. You can see I've ended up using cd and ls.
>> I'm sure there must be a better way.
> 
> git-for-each-ref, git-show-ref, git-ls-remote / git-peek-remote.

Ah right, those look hellishly useful, thanks.

>> $ cd /home/public/tmp/git/
>> $ yes |rm -r vdos32
>> $ git clone /export/git/vdos32.git vdos32
>> $ cd vdos32/
>> $ for f in `(cd /export/git/vdos32.git/refs/heads; ls)|sed -e
>>     '/master/d' -e '/origin/d'`; do git fetch origin $f:$f; done
>> $ git-filter-branch --tag-name-filter cat --tree-filter 'find . -type f
>>     ! -name \*.gif ! -name \*.ico|xargs unix2dos -q' `(cd
>>     .git/refs/heads;ls)`
> 
> If you want to fetch all branches, you can specify globbing refspec;
> of course if you use separate remotes layout, or mirror layout.

I think I tried that with my line 5 above. I tried 
refs/heads/*:refs/heads/* as the ref spec. Should something like that
work?

> If you want to pass all branches to git command, usually --all would
> be enough (sometimes --heads).
>  
>> With git-filter-branch, I'm surprised I can't use --all.
> 
> git-filter-branch is about single branch; I'm not sure if it should
> support --all.

It seems to work with multiple branches, and I think it's important
that it does, because as far as I can tell, that's the only way
to filter a whole repository without visiting some commits more
than once. Certainly my command, using cd/ls, worked and visited
each commit exactly once.

Cheers,
	Paul.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Best way to specify all local branches and all remote branches.
  2008-02-11 19:10 ` Jakub Narebski
  2008-02-11 19:40   ` Paul Gardiner
@ 2008-02-11 20:23   ` Johannes Schindelin
  2008-02-11 21:00     ` Paul Gardiner
  1 sibling, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2008-02-11 20:23 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git

Hi,

On Mon, 11 Feb 2008, Jakub Narebski wrote:

> git-filter-branch is about single branch;

No.

> I'm not sure if it should support --all.

It does.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Best way to specify all local branches and all remote branches.
  2008-02-11 20:23   ` Johannes Schindelin
@ 2008-02-11 21:00     ` Paul Gardiner
  2008-02-11 21:34       ` Jakub Narebski
  0 siblings, 1 reply; 6+ messages in thread
From: Paul Gardiner @ 2008-02-11 21:00 UTC (permalink / raw)
  To: git

Johannes Schindelin wrote:
> Hi,
> 
> On Mon, 11 Feb 2008, Jakub Narebski wrote:
> 
>> git-filter-branch is about single branch;
> 
> No.
> 
>> I'm not sure if it should support --all.
> 
> It does.

Yep, it does. I'd forgotten how to drive the shell. It works if
I put -- --all.

Turns out that isn't what I want though. I want just the local
branches. Still can't find a way to do it other than my cd/ls
thing.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Best way to specify all local branches and all remote branches.
  2008-02-11 21:00     ` Paul Gardiner
@ 2008-02-11 21:34       ` Jakub Narebski
  0 siblings, 0 replies; 6+ messages in thread
From: Jakub Narebski @ 2008-02-11 21:34 UTC (permalink / raw)
  To: Paul Gardiner; +Cc: git

Paul Gardiner <osronline@glidos.net> writes:

> Johannes Schindelin wrote:
>> On Mon, 11 Feb 2008, Jakub Narebski wrote:
>>
>>> git-filter-branch [...] should support --all.
>>
>> It does.
> 
> Yep, it does. I'd forgotten how to drive the shell. It works if
> I put -- --all.
> 
> Turns out that isn't what I want though. I want just the local
> branches. Still can't find a way to do it other than my cd/ls
> thing.

I wrote: git-for-each-ref(1). See documentation, please.

  $(git for-each-ref --shell --format="%(refname)" "refs/heads/*")

-- 
Jakub Narebski
Poland
ShadeHawk on #git

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-02-11 21:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-11 18:51 Best way to specify all local branches and all remote branches Paul Gardiner
2008-02-11 19:10 ` Jakub Narebski
2008-02-11 19:40   ` Paul Gardiner
2008-02-11 20:23   ` Johannes Schindelin
2008-02-11 21:00     ` Paul Gardiner
2008-02-11 21:34       ` Jakub Narebski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).