从git到svn(或者,如何在git中保存项目历史记录并在svn中发布)

从git到svn(或者,如何在git中保存项目历史记录并在svn中发布),git,workflow,git-svn,cherry-pick,Git,Workflow,Git Svn,Cherry Pick,我是唯一一个使用git的人,其他人都在使用svn。我使用“git svn”连接到团队svn,大多数情况下,它工作正常。最近,我开始自己做一个项目,独立的git回购,现在我需要将它的内容合并到svn。然而,我仍然希望在发布之间在我自己的隐私中不断调整实现 那么,从我的私人回购到svn克隆回购,最直接的方法是什么?要求是保存完整的本地历史记录,并且每个选择只有一个svn提交。还是有一些压榨要做 作为实现这一点的一种方法,是否有办法将私有回购作为svn克隆回购的另一个来源?您可以尝试在Git svn回

我是唯一一个使用git的人,其他人都在使用svn。我使用“git svn”连接到团队svn,大多数情况下,它工作正常。最近,我开始自己做一个项目,独立的git回购,现在我需要将它的内容合并到svn。然而,我仍然希望在发布之间在我自己的隐私中不断调整实现

那么,从我的私人回购到svn克隆回购,最直接的方法是什么?要求是保存完整的本地历史记录,并且每个选择只有一个svn提交。还是有一些压榨要做

作为实现这一点的一种方法,是否有办法将私有回购作为svn克隆回购的另一个来源?

您可以尝试在Git svn回购之前将Git回购提交给Git svn回购


从您的回购中提交的文件可以被隔离在一个特殊的分支中,当它可以发生时,为了导出更干净的历史。

< P>如果您是目前唯一使用Git RePo的人,您可以考虑将您的所有工作重新建立在您创建的空版本克隆的顶部。然后设置一个分支,将推送回subversion,挤压每个版本,并将其提交回SVN


一个更深入的解决方案,考虑直接使用<代码> Git提交树< /C>,将它提供给您要提交的树(通过运行<代码> Git show -格式=原始头< /代码>,并查看第二行(“树”))、正确的父提交(当前正在进行的任何版本)和在STDIN上的正确日志消息。这是直接使用管道,你可能想写一个脚本来为你做到这一点。。。其效果是您创建了一个包含现有提交的文件内容的新提交(与cherry pick相比,cherry pick采用现有提交添加的差异,而不是复制树)。

是的,我是目前唯一的git用户。重新定基是否意味着所有未来的工作都将在克隆的svn中完成?克隆的svn回购协议是空的。。。尽管如此,这可能不会改变任何事情。因此,简而言之,我可以重新表述一下,我的项目实际上是一个子项目,要合并到一个主干中,该主干包含多个相关项目,位于各自的目录中。没有理由在从subversion直接克隆的repo中进行工作,但您希望在将subversion克隆作为其父级的分支上进行工作。您可以通过将重定基础的分支拉回到工作存储库中,并使用
git branch-f
将当前工作分支设置为指向重定基础的引用来实现这一点。