问题很简单.我已经使用git cvsimport将cvs repo导入到本地git存储库中的远程分支中.然后,我希望将此存储库:branches,tags和all同步到云中的git存储库(github/gitorious).要做到这一点,我无法访问rsync或直接复制存储库,我必须使用git push.
如何镜像我的本地存储库以便其他人可以访问完整的_cvsimport_d历史记录?
具体来说:
我使用cvsimport导入和跟踪存储库:
git cvsimport -i -v -C cdt-make-core -d :pserver:anonymous@dev.eclipse.org:/cvsroot/tools -r cvs org.eclipse.cdt/all/org.eclipse.cdt.make.core
以上导入org.eclipse.cdt.make.core进入git repo cdt-make-core中的远程cvs.
然后我可以将主CVS分支的HEAD推送到github:
git push github cvs/master:refs/heads/cvs/HEAD
(我明确指定了远程路径,所以如果它不存在则创建它.)
有没有办法同步所有分支:遥控器上的cvs/*=> cvs/*?
有没有办法同步所有标签?
我想你正在寻找--mirror推动的选择:
git push --mirror github
Run Code Online (Sandbox Code Playgroud)
这将推送所有引用(分支和标记),包括非快进更新.我用它来创建本地存储库的备份.
该手册页描述它是这样的:
代替命名每个裁判推的,指定了下的所有参考文献
$GIT_DIR/refs/(包括但不限于refs/heads/,refs/remotes/和refs/tags/)被镜像到远程存储库.新创建的本地引用将被推送到远程端,本地更新的引用将在远程端强制更新,并且已删除的引用将从远程端删除.如果remote.<remote>.mirror设置了配置选项,则这是默认设置.
[OT:我在日常工作中使用CDT,我喜欢它!]
我的发现是,如果您使用下面的第二个合理的解决方案,您需要首先执行 --mirror ,因为它会清除您尝试推送的那些 cvs/ 分支。所以完整的公式是:
git push --mirror -v github
git push --force github cvs/master:refs/heads/cvs/HEAD
for x in `git branch -r | grep '^..cvs/[a-zA-Z0-9_-]*$' | sed -e 's/^..//'` ; do
git push -v github $x:refs/heads/$x
git config branch.$x.remote github
git config branch.$x.merge refs/heads/$x
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7963 次 |
| 最近记录: |