【问题标题】:git-svn : prevent commit if svn rebase is neededgit-svn : 如果需要 svn rebase 则阻止提交
【发布时间】:2011-12-21 15:43:27
【问题描述】:

两个人在本地运行 git 并使用 git-svn 与远程主 SVN 服务器同步。

人员 A 执行 SVN REBASE 并修改其本地 git 文件。 人 B 也做了一个 SVN REBASE 并在他们的 git 本地修改相同的文件以解决不同的问题。

B 人使用 GIT SVN DCOMMIT 提交。

人员 A 使用 GIT SVN DCOMMIT 提交,但由于他们缺少人员 B 提交,因此人员 B 的提交被回滚。

如果远程 SVN 服务器需要重新定位,有什么方法可以标记 GIT SVN DCOMMIT?

【问题讨论】:

    标签: git git-svn


    【解决方案1】:

    您上面的用法要么有错误,要么很奇怪。应该发生什么:


    1)都通过git svn clone签出存储库

    2) 当 A 或 B 进行更改时,他们应该:

    2a) 做出改变

    2b) git commit

    2c) 要么继续工作(转到 2a)要么向上推动更改

    3) 在提交他们自己的东西之前,他们需要做一个git svn rebase。 git-svn 实际上已经阻止您进入第 4 步,直到您与上游 svn 存储库同步

    4) git svn dcommit


    如果您按照上述步骤操作,您应该无法在不先运行 rebase 的情况下从步骤 3 转到成功的步骤 4 (git dcommit)。由于 rebase 将您的所有更改移动到 git 中的 SVN 树的顶部,因此您永远不会撤消其他人的更改。

    现在....你不应该那样做。 (嗯,你可以,但它更棘手;上面更安全)

    【讨论】:

    • 如果上述情况属实,svn dcommit merge 是否可能是第一个人提交的“回滚”?
    • 其实不是我们看到的。如果你执行 dcommit,它会被提交到 svn,然后 git 存储库会从 svn 拉下所有提交并应用它们。
    • afaik 你不能“使用 svn rebase 提交”rebase(git 和 git svn)与现有提交一起工作,创建新的提交,你在 git 上使用 commitdcommit 复制那些到svn。
    • 另外,正如 Wes 所说,除非您在本地拥有最新的 svn 修订版,否则 git 不应该让您 dcommit,但我承认我没有经历过这种特殊情况,所以我不能向您保证它不会.
    • 我修复了文本,因为你是 100% 正确的,我在提交步骤中使用了错误的命令。如果您没有最新的 svn 版本,我们不会看到 dcommit 停止。而是在 dcommit 完成 svn rebase 之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多