3

今天是我玩SVN的第一天。但是有一种情况我无法解决:

我在 2 台 pc 上结帐第一台 pc 更改了文件中的某些内容并提交。然后第二台电脑尝试提交:

Commit failed (details follow):
File '/classes/ghjs.html' is out of date

我必须在第二台电脑上运行更新,它从 pc 1 获取新文件,然后我可以再次正确提交,但是在更新之前所做的更改会丢失。

如果您必须先提交/更新才能编写一行代码,否则 SVN 并不是那么棒,否则处理同一文件的其他人没有您的最新版本。

我知道没有“实时”协作的想法,但是如果您使用的是旧版本,则必须有一些东西,而不是更新,您可以手动将更改“移植”到最新版本。

我使用“版本”作为 svn 客户端和 textwrangler 作为编辑器来编辑 php 代码。

4

3 回答 3

5

我必须在第二台电脑上运行更新,它从 pc 1 获取新文件,然后我可以再次正确提交,但是在更新之前所做的更改会丢失

不,他们没有迷路。它们被合并到您的本地副本中(正如您所期望的那样),并且在更新后您可以提交以将它们添加到存储库中。如果合并导致冲突,您将收到通知,但仍然不会丢失任何工作。

如果您在更新后丢失了更改,那么您做错了什么——我对版本一点也不熟悉,所以我不能说。

于 2011-06-15T16:47:21.767 回答
0

对 pc 2 上文件的本地更改不应在svn update. 它们将与 pc1 上所做的更改合并并提交。如果对有冲突的同一行进行更改,您将无法提交,直到冲突解决,选择保留任一文件版本的更改。不过,您不应该在更新后丢失本地更改。

于 2011-06-15T16:47:50.363 回答
0

然后你在 PC 2 上“更新”,它应该将 PC 1 的更改合并到 PC 2 的工作副本中。如果文件是在 PC 2 上编辑的,那么它应该干净地合并它们,或者给出合并冲突,您可以手动解决它们。

这样做是为了让 SVN 有一个地方来合并这 2 个更改。合并是在工作副本中完成的,而不是在服务器上。

如果您在更新时从 PC2 所做的更改丢失,并且没有显示合并错误,那么这确实可能是一个问题。

于 2011-06-15T16:49:58.677 回答