忽略 git refspec 中的单个命名空间
Ignore a single namespace in git refspec
考虑以下存储库。它有很多团队成员的私人分支,都在 refs/heads/team/
名称 space 下,我不想获取,但我仍然想获取所有其他分支,包括任何可能新创建的team
名称space.
之外的分支
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | wc -l
217
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | grep -v refs/heads/team/ | wc -l
32
我正在获取 fetch = +refs/heads/*:refs/remotes/golden/*
,但这些私有分支只是压倒了我的 refs/remote/golden
名称space,使其更难概览,并且还需要更多 space本地存储库。
是否可以获取 refs/heads/*
,但排除 refs/heads/team/*
?
很遗憾,没有。
幸运的是,您可以任意关闭,特别是如果您愿意每次都使用两次获取,或者一次获取然后删除一次(可能这实际上会更有效率,或者至少时间-高效;可能需要更多 space,具体取决于有多少对象最终变得无用)。
基本上这里的想法是列出所有要采取的东西,首先 运行ning git ls-remote
然后进行自己的过滤并重写 fetch =
条目(嗯,条目)遥控器:
git ls-remote "$remote" 'refs/heads/*' |
(git config --unset-all "remote.$remote.fetch";
while read hash ref; do
case $ref in refs/heads/team/*) continue;; esac
rmtref="refs/remotes/$remote/${ref#refs/heads/}"
git config --add "remote.$remote.fetch" "+$ref:$rmtref"
done)
git fetch "$remote"
(添加一些前端工作以适当地设置 $remote
)。使这项工作成功的关键是 git 结合并遵守 all 和 fetch =
行。
对于另一个想法,运行 一个正常的 (+refs/heads/*:refs/remotes/...
) 提取,然后是一系列 git update-ref -d refs/remotes/$remote/${ref#refs/heads/}
匹配不需要的形式的引用。如果你愿意,可以在之后加入 git gc
(或 git repack
and/or p运行e),以缩小存储库。
考虑以下存储库。它有很多团队成员的私人分支,都在 refs/heads/team/
名称 space 下,我不想获取,但我仍然想获取所有其他分支,包括任何可能新创建的team
名称space.
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | wc -l
217
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | grep -v refs/heads/team/ | wc -l
32
我正在获取 fetch = +refs/heads/*:refs/remotes/golden/*
,但这些私有分支只是压倒了我的 refs/remote/golden
名称space,使其更难概览,并且还需要更多 space本地存储库。
是否可以获取 refs/heads/*
,但排除 refs/heads/team/*
?
很遗憾,没有。
幸运的是,您可以任意关闭,特别是如果您愿意每次都使用两次获取,或者一次获取然后删除一次(可能这实际上会更有效率,或者至少时间-高效;可能需要更多 space,具体取决于有多少对象最终变得无用)。
基本上这里的想法是列出所有要采取的东西,首先 运行ning git ls-remote
然后进行自己的过滤并重写 fetch =
条目(嗯,条目)遥控器:
git ls-remote "$remote" 'refs/heads/*' |
(git config --unset-all "remote.$remote.fetch";
while read hash ref; do
case $ref in refs/heads/team/*) continue;; esac
rmtref="refs/remotes/$remote/${ref#refs/heads/}"
git config --add "remote.$remote.fetch" "+$ref:$rmtref"
done)
git fetch "$remote"
(添加一些前端工作以适当地设置 $remote
)。使这项工作成功的关键是 git 结合并遵守 all 和 fetch =
行。
对于另一个想法,运行 一个正常的 (+refs/heads/*:refs/remotes/...
) 提取,然后是一系列 git update-ref -d refs/remotes/$remote/${ref#refs/heads/}
匹配不需要的形式的引用。如果你愿意,可以在之后加入 git gc
(或 git repack
and/or p运行e),以缩小存储库。