同一个svn存储库的不同git svn克隆是否能够共享更改,然后git svn DCOMIT?
我在网上读了很多“从svn转到git”和其他“git svn工作流”的文章,但我仍然认为它们经常处理过于简单的情况。他们的目标通常是那些只想在本地使用git和hack的人,而没有使用git的全部功能,比如多个开发人员之间的pull、fetch、merge等,这些开发人员都会使用git svn克隆svn存储库,然后仍然希望能够随时将他们的更改推送到(官方)svn存储库,回到git工作,分享他们的东西等等 每当这些文章承认你不能在纯git中做所有你想做的事情时,后果和可能的错误永远不会被清楚地解释(或者可能只是我?)。甚至git svn手册页也提到了注意事项,但并不是以广泛的方式 根据我所读到的,我觉得以那种特定的方式使用git svn可能会有问题,我将在下面描述。有人能告诉我这件事是否正确吗 以下是“想要”的做事方式:同一个svn存储库的不同git svn克隆是否能够共享更改,然后git svn DCOMIT?,svn,git,git-svn,code-sharing,Svn,Git,Git Svn,Code Sharing,我在网上读了很多“从svn转到git”和其他“git svn工作流”的文章,但我仍然认为它们经常处理过于简单的情况。他们的目标通常是那些只想在本地使用git和hack的人,而没有使用git的全部功能,比如多个开发人员之间的pull、fetch、merge等,这些开发人员都会使用git svn克隆svn存储库,然后仍然希望能够随时将他们的更改推送到(官方)svn存储库,回到git工作,分享他们的东西等等 每当这些文章承认你不能在纯git中做所有你想做的事情时,后果和可能的错误永远不会被清楚地解释(
我是否完全误解了git svn的警告?有更简单的方法吗?我以前做的是创建一个初始的git svn克隆,然后在使用git的开发人员之间共享he.git,所以我们有完全相同的引用。
它似乎工作正常,因为我们能够在git用户之间使用“特定的git功能”,只要我们停留在一个线性树中(即重定基址而不是合并)。一旦您进入“分布式”问题,您最好在开发人员之间克隆一个简单的git repo。
关于向公共SVN回购的导出-导入阶段,供其他人使用,脚本
可以帮助封装魔法
在Git和SVN回购中工作时的其他注意事项可以在问题中找到。问题当然是步骤4。dcommit尝试向服务器重播本地历史记录。Dcommit假装您是SVN客户。现在,如果您要提交的代码不仅仅来自您,那么很难将其提交给SVN 以下是政府对此事的评论:
- 为了简单性和与SVN的互操作性,它是 建议所有git svn用户 直接从中克隆、获取和提交数据 SVN服务器(远程SVN 存储库),并避免所有 git克隆/拉/合并/推操作 在git存储库和分支之间 可以通过git svn检索 克隆和,它们也用于推送 将变更集返回到远程SVN 存储库
- git分支之间交换代码的推荐方法 而用户是git格式的补丁和git am,或只是向svn提交git svn数据 存储库
- 由于git svn dcommit在内部使用git svn rebase,因此任何git分支 git svn数据提交之前的git推送到 它们将需要强制覆盖 远程服务器上现有ref的 存储库。这通常是 被认为是不好的做法,请参见 有关详细信息,请参阅git推送文档
- 不建议在我们计划创建的分支上运行git merge或git pull git svn数据提交自。SVN没有 以任何合理或合理的方式代表合并 有用的时尚让用户使用SVN 无法看到我们进行的任何合并。 此外,如果我们使用git merge或git 从作为 SVN分支的镜像,git SVN D委员会可能会犯错误 分支机构
- git clone不克隆refs/remotes/hierarchy或 任何git svn元数据或配置。所以 使用创建和管理的存储库 使用git svn应该使用 对于克隆,如果要进行克隆 一点也不
- 我们不应该在需要更改时使用git commit的--amend选项 已经提交了。它是 被认为是不好的做法--修改 我们已经推到了一个 其他用户的远程存储库,以及 与SVN的dcommit类似。 有关这方面的更多信息,请参见 在修改单个提交和
$ subgit configure $SVN_REPOS
# Adjust $SVN_REPOS/conf/subgit.conf to specify branches, tags and other options;
# Adjust $SVN_REPOS/conf/authors.txt to specify git & svn authors mapping
$ subgit install $SVN_REPOS
...
$ INSTALLATION SUCCESSFUL