2

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

一个项目有一个公共的只读 svn repo。我想随着时间的推移对其源进行自己的更改并跟踪。同时仍然从 svn repo 获取更改。当然,我可以很容易地做到这一点git-svn。我只是从不表演dcommit

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

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

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

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

意思是,我是否应该让每个工作位置都以完全分散的方式直接从远程 svn 获取本地 git。或者我应该竭尽全力让单个远程 git repo 自己进行 svn 获取。为了使各种本地 git 更容易协调来自 svn 的更改,即使它们看起来像他们从远程 git 存储库中所做的更改。

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

4

2 回答 2

1

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

试试这个:

git svn clone svn-url

这负责从远程 svn 获取。然后,您可以将 git 与分支等一起使用,并继续 git svn 拉动 master,将更改合并到您的开发分支等。不过,我倾向于使用单独的存储库并执行以下操作:

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

并从 svn 克隆拉到我的开发存储库中。这只是个人喜好,但它使我的“导入”存储库保持清洁,我的开发存储库只是认为它是上游代码库。我也可以通过这种方式从其他 git 存储库中提取;我从来不确定在 git-svn 存储库上这样做,因为我从来没有亲自提交回 svn ......但是。然后你可以

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

按照正常情况。

于 2010-04-06T21:43:48.333 回答
1

如果您可以git-svn在远程服务器上运行,我会进行这样的设置:

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

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

于 2010-04-06T21:48:39.293 回答