5

我现在是唯一一个使用 git 的人,其他人都在使用 svn。我已经使用 'git svn' 连接到团队 svn,而且大多数情况下它工作得很好。最近,我最初自己开始了一个项目,单独的 git repo,现在我需要将其中的东西合并到 svn。但是,我仍然想在发布之间继续调整我自己的隐私实现。

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

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

4

2 回答 2

2

您可以尝试在git svn 存储库之前将 Git 存储库中的提交移植git dcommit到 git-svn 存储库的提交。

来自您的 repo 的提交可以在一个特殊的分支中被隔离,此时可以进行所有类型的压缩以导出更清晰的历史记录。

于 2010-03-19T12:14:48.740 回答
1

如果你是目前唯一使用 git repo 的人,你可以考虑将你所有的工作重新建立在你创建的空 subversion 克隆之上。然后设置一个分支来保持你的推送回到颠覆,将每个版本压缩到它上面并将它提交回 SVN。

对于更深入的解决方案,请考虑git commit-tree直接使用 -- 为它提供您要提交的树(通过运行git show --format=raw HEAD并查看第二行(“树”)找到),正确的父提交(当前在颠覆中的任何内容)和标准输入上的正确日志消息。这是直接使用管道,您可能想编写一个脚本来为您完成...效果是您创建了一个包含现有提交的文件内容的新提交(与cherry-pick相比,它需要由现有提交添加的差异,而不是复制树)。

于 2010-03-19T12:33:02.700 回答