我在网上阅读了大量“从 svn 到 git”和其他“git-svn 工作流程”的文章,但我仍然认为它们经常处理过于简单的情况。他们通常针对那些只想在本地使用 git 和 hack 的人,而不使用 git 的全部功能,例如在多个开发人员之间进行 pull、fetch、merge 等,他们都将使用 git-svn 克隆 svn 存储库,然后仍然希望能够随时将他们的更改推送到(官方)svn 存储库,并回到在 git 中工作并分享他们的东西等。
每当这些文章承认你不能在纯 git 中做所有事情时,后果和可能的错误永远不会被清楚地解释(或者也许只是我?)。甚至 git-svn 手册页也提到了警告,但并没有以广泛的方式。
根据我所阅读的内容,我觉得以这种特定方式使用 git-svn 可能会出现问题,我将在下面进行描述。有人可以告诉我我是否正确吗?
这是“想要”的做事方式:
- 我们在 svn 存储库中有一个项目
- 开发人员 git-svn-clone 是 svn 存储库。他开始在本地破解东西
- 开发者 B git-svn-clone 是同一个 svn repo。他开始自己破解东西。
- 在这样做了一段时间后,可能会添加开发人员 C/D/...,并让其他开发人员对原始存储库执行“标准”svn 提交,git 用户会想要共享他们的代码并做各种 git 魔术.
- 这些 git 用户中的任何一个都希望能够将现在合并的更改推送到 svn(dcommit?)
我的问题是:我在做梦吗?我前段时间在一本 git 书中读到,我认为 git-svn-clone 可以创建 git 存储库,这些存储库当然是 svn 存储库的“镜像”,但是不同开发人员以这种方式创建的 git 存储库会有不同的“ ids”和提交会有不同的哈希值。所以我的理解是,那些 git repos 不会共享任何共同的 git 祖先,因此无法使用您需要共享、合并等的所有 git 命令。是真的吗,我们会面临这个工作流程的问题吗?
有时我读到这可以做到,至少使用一个“官方”裸 git 存储库,这将是唯一一个被 git-svn-clone 的,所有 git 用户都必须从这个开始。然后你需要一个负责这个中央 git 存储库的人,并收集 git 开发人员之间的更改,然后将所有内容提交到 svn 存储库。这将是 git 用户“不知道”原始 git repo 来自 svn 的唯一方法,并允许他们随意使用所有 git 命令。唯一需要精通 git 和 svn(并了解 git-svn 警告)的人将是“合并经理”(或他所谓的任何东西)。
我完全误解了 git-svn 警告吗?有没有更简单的方法来做到这一点?