Jakub Narebski wrote:
Paul Gardiner <osronline@xxxxxxxxxx> 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.
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html