【问题标题】:Unexpected overwriting CVS/SVN repository files in Mac Eclipse在 Mac Eclipse 中意外覆盖 CVS/SVN 存储库文件
【发布时间】:2014-06-27 11:42:33
【问题描述】:

我使用的是 Windows Eclipse CVS,而 CVS 不允许我覆盖最新的修订版——我需要先更新。同时,一位在 Mac 上工作的开发人员不断覆盖我的文件。我们查看了这个问题,发现他的 CVS Eclipse 插件允许在没有任何警告的情况下覆盖最新版本。

现在我自己使用 SVN Eclipse 插件与 Mac 一起工作,但我不小心覆盖了我的共同开发人员的最新版本。如何防止这种覆盖?如果发生这种覆盖,那么恢复到以前的修订并将它们提交回存储库的优雅方式是什么?

【问题讨论】:

    标签: eclipse macos svn repository cvs


    【解决方案1】:

    等等?有点不对劲……

    CVS 和 Subversion 绝不会让您覆盖其他人的更改。版本控制的全部目的是允许多人同时处理同一个文件。

    版本控制系统有两种方法:

    • 结帐和锁定:最古老的系统使用结帐和锁定系统。也就是说,您签出代码以进行更改,在您签入更改之前,不允许其他人签出和进行更改。问题是有人可能会在一周内签出文件而忘记重新签入,或者去度假。然后,其他人都被困无法工作。

    • 签出,第一个提交的人获胜:在这个系统中,两个人可以签出同一个文件并完成他们的工作。但是,第一个完成更改并提交的人获胜。另一个人必须进行更新,将第一个人的更改合并到他们的工作副本中,然后他们才能提交更改。这就是 Subversion 和 CVS 所做的。

    那么,你到底是如何失去你的改变的?或者,您如何覆盖其他人的更改?

    如果您与其他人共享已签出的工作副本,有时会发生这种情况。这是错误的,永远不应该这样做。相反,每个用户都应该拥有自己独立的项目副本(哎呀,如果需要,您甚至可以拥有多个版本)。当您的合作伙伴签入他们的更改时,它不应该影响您的文件。

    会发生的情况是,当您尝试提交更改时,您会被告知您的工作副本已过期。您必须更新您的工作副本,这会将您合作伙伴的更改合并到您的工作副本中。然后,您应该确认一切正常,然后提交您的工作副本,该副本现在将包括您和您的合作伙伴的更改。

    这是否回答了您的问题?您是共享所有共享同一个目录,还是有自己的工作副本?还有其他事情吗?

    【讨论】:

    • 我理解“其他人必须进行更新,将第一个人的更改合并到他们的工作副本中,然后他们才能提交更改。”但这是我的问题,为什么 Mac Eclipse 允许我和其他开发人员进行这种覆盖?
    • 我使用 Mac OS X Eclipse 并且没有这个问题。您使用的是 Subversive 或 Subclipse 之类的插件吗?您使用的是 SVNKit 还是 Javahl?我使用 Subversive 和 SVNKit,没有这个问题。
    • 对不起。我不知道会是什么问题。我使用相同的两个插件,没有这个问题。事实上,服务器应该拒绝不是当前的事务——这不是客户端问题。您使用的是file:// 协议吗?您是否可能正在进行更新并手动撤消更改?您是否尝试过更新您的插件?
    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多