git - 创建远程 Git 分支作为 SVN 存储库的特定 git-svn 分支的镜像

标签 git svn git-svn git-remote

我使用 git-svn 的 git svn clone <orig_svn_repo_path> 从远程服务器本地克隆了现有的 svn 存储库。我现在只想为本地克隆存储库的几个分支中的一个特定分支设置一个远程存储库,比如 <cloned_repo>/branches/<branch_to_clone> 。这可以吗?存储库的其余部分在大小方面相当巨大,并且由于我只需要处理那个特定的分支,因此我宁愿为其设置一个远程镜像。另外,如果可能的话,我将如何使用正在处理的分支更新原始 svn 存储库,并将我的更改推送到远程 git 分支(存储库)以使其与本地分支(更新到 svn 上)保持同步 repo )?

最佳答案

如果您想向 SVN 提交(使用 git svn dcommit ),则不应使用 git clone任何 git 存储库的。

您应该使用git svn init带有适当参数的命令,以便仅获取您感兴趣的 SVN 目录,然后是 git svn fetch 。您可以根据需要多次执行此操作。

如果您执行git clone在设置为跟踪 SVN 的存储库中,您遇到一个问题:git-svn 修改它通过 dcommit 发送到 Subversion 的提交正文,添加 git-svn-id线。这是一种历史改写。因此,如果您有一个忽略 SVN 的存储库,该存储库会推送到支持 SVN 的存储库,然后再推送到 Subversion 本身,那么当您尝试执行 git push 时,就会遇到问题。第二次。

为了确保我们清楚,问题是第一个存储库在执行 dcommit 时将重写历史记录。 。因此,从那时起下 pull 到另一个 git 存储库的任何新更改都将具有不同的提交哈希,需要强制 pull/推。这与如果有人重新调整公开可见的更改时会发生的情况完全相同:请参阅 this SO answer .

从根本上来说,git-svn 被设计为与 SVN 存储库本身一起使用,作为“中央”存储库。

如果您想要 Subversion 的只读副本,请不要再做 dcommit (或者至少在你从第一个 git repo 执行 dcommit 之后不保持第二个 git repo 是最新的),那么就可以了。只需做一个 git clone refspec 仅限于您感兴趣的分支。

关于git - 创建远程 Git 分支作为 SVN 存储库的特定 git-svn 分支的镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14567906/

相关文章:

git-svn - git-svn 获取时 RA 层请求失败

svn - repo 应该 promise 什么?

git - 本地 Git 部署到 Azure 应用服务

git - 在 Windows 上设置 autocrlf = input 有什么害处?

git - 与 Team Foundation Server 类似的程序

svn - 颠覆客户端 1.7 文件外部更新错误

svn - SVN 到 Git 迁移后如何列出和获取远程分支?

linux - git 可以使用基于补丁/差异的存储吗?

svn - 找不到 cygwin setup.exe 文件?

git - 在当前标准布局和过去非标准布局的项目中 git-svn 使用哪种布局