从svn获取。致力于远程git

时间:2010-04-06 21:27:40

标签: svn git git-svn dvcs commit

我是git的新手,我正在努力了解它是否可以解决我的问题。

项目有一个公共只读svn repo。我希望随着时间的推移制作并跟踪我自己对其来源的更改。虽然仍然从svn repo获取更改。当然,我可以使用git-svn轻松完成此操作。我只是从不执行dcommit

增加的问题是我在多个地方工作。因此,我使用远程仓库在这些位置之间同步文件。这也是我可以用git轻松完成的另一件事,使用远程git repo。

但把它们放在一起,我有:

  • 从远程svn获取
  • 提交本地git
  • 拉/推到远程git。

使用git这是一个合理的工作流程吗?随着时间的推移,我自己的更改/提交将与svn repo的更新交织。如果是这样,我应该如何设置它。

意思是,我是否应该以完全分散的方式直接从远程svn获取每个工作位置的本地git。或者我应该让我的方式让单个远程git repo执行svn获取本身。为了使各种本地gits更容易协调来自svn的更改,即使它们看起来像是来自远程git repo的更改。

如果需要,我只能在远程git repo主机上运行git-svn

2 个答案:

答案 0 :(得分:1)

Git可以很容易地做到这一点。

试试这个:

git svn clone svn-url

负责从远程svn获取。然后你可以随意使用git和分支等,并继续git svn拉动master,将更改合并到你的开发分支等。我倾向于使用一个单独的存储库,然后执行此操作:

git remote add svn /path/to/git/repo/cloned/from/svn

从svn clone拉入我的开发库。这只是个人偏好,但它保持我的“导入”存储库清洁,我的开发存储库只是认为它是上游代码库。我也可以这样从其他git存储库中提取;我不知道在git-svn存储库之上这样做是因为我从未亲自回复svn ...那么你可以

git remote add server remote-repo
git push server {branch}

按照正常情况。

答案 1 :(得分:1)

如果您可以在远程服务器上运行git-svn,我会选择以下设置:

  • 使用特殊分支来跟踪上游svn存储库。使托管git存储库的服务器使用已知分支中的git-svn跟踪删除svn(f.e。upstream)。
  • 从该远程存储库中提取
  • 为您的更改(或多个主题分支)使用单独的分支。将上游分支更改合并到主题分支。然后,您可以始终在主题分支和上游分支之间进行区分,并检查差异。如果您不发布主题分支,您也可以使用rebase,因此您可以将更改始终作为上游更改之上的补丁。

如果你无法在远程服务器上运行git-svn我会做的非常相似,但让远程服务器拉动svn更改会更好,因为你不需要担心它。 / p>