我们公司使用(并支持!)SVN,但我更喜欢使用git。我想尝试的是拥有git存储库-每个项目一个,项目开发人员将能够从此存储库拉取(当然也可以相互拉取)。但我仍然希望将所有更改推送到SVN,因为我们的技术支持正在维护SVN。
我正在测试以下存储库方案:
1. SVN存储库-这个由我们公司维护,我们的团队应该在某个时候将所有更改推送到此处。 2. git-svn克隆-这是从上面的SVN克隆的git存储库-所有项目开发人员都应该将他们的提交推送到这里。 3. git-dev-clone-这是开发人员的git存储库。
我注意到直接使用“git svn rebase”和“git svn dcommit”的唯一问题是,在每次从开发人员的git存储库推送到git-svn-clone存储库后,我必须立即重新基于开发人员的存储库,以便更改传播到SVN并被重新基于。我想要实现的是避免每次推送后重新基础。
请注意,我假设每个项目开发人员只使用git存储库,没有人会直接使用SVN。
我能够通过在每次推送后逐个检出“git-svn-clone”存储库中的每个git提交并使用SVN客户端将这些更改提交到SVN来手动实现此行为。我相信“git svn dcommit”也会这样做,但它还会从SVN同步回来并更改提交SHA标识符,这迫使我重新基于。
附注:对于“git svn dcommit”的“--no-rebase”选项没有帮助,因为在第一个提交传播到SVN后,“git svn dcommit”不允许我提交更多的更改到SVN,直到先前的更改被重新基于。我尝试过这种行为,可能会忽略一些东西。
我正在测试以下存储库方案:
1. SVN存储库-这个由我们公司维护,我们的团队应该在某个时候将所有更改推送到此处。 2. git-svn克隆-这是从上面的SVN克隆的git存储库-所有项目开发人员都应该将他们的提交推送到这里。 3. git-dev-clone-这是开发人员的git存储库。
我注意到直接使用“git svn rebase”和“git svn dcommit”的唯一问题是,在每次从开发人员的git存储库推送到git-svn-clone存储库后,我必须立即重新基于开发人员的存储库,以便更改传播到SVN并被重新基于。我想要实现的是避免每次推送后重新基础。
请注意,我假设每个项目开发人员只使用git存储库,没有人会直接使用SVN。
我能够通过在每次推送后逐个检出“git-svn-clone”存储库中的每个git提交并使用SVN客户端将这些更改提交到SVN来手动实现此行为。我相信“git svn dcommit”也会这样做,但它还会从SVN同步回来并更改提交SHA标识符,这迫使我重新基于。
附注:对于“git svn dcommit”的“--no-rebase”选项没有帮助,因为在第一个提交传播到SVN后,“git svn dcommit”不允许我提交更多的更改到SVN,直到先前的更改被重新基于。我尝试过这种行为,可能会忽略一些东西。