2

我是使用svn的新手,我工作的公司使用svn的三个级别(我不知道这是否是一个正确的词)。我的意思是在测试服务器上为开发人员提供了一个工作目录。当我们提交时,它会转到开发服务器。当经理从那里提交它时,它会进入生产服务器。我是这里的开发人员,当我从目录提交时,我的一个文件给出了错误(冲突)。不仅如此,当经理试图提交时,它也会产生冲突。我现在也被授予管理员访问权限,但我仍然无法解决它。

我到目前为止所尝试的:

svn update
svn delete
svn commit

它给所有这些操作带来了冲突。

早些时候发生了一个简单的错误,经理更喜欢只删除 dev 上的文件,手动复制它,然后从那里提交。我不知道这可能是不是这个问题的原因。

请帮我解决这个问题。我也在读豆书上读过一些东西,但还没有用。

谢谢

好的,这是更新。实际问题是一个文件(例如 lib/a.php)曾经位于我的工作目录以及开发和生产服务器中。现在它被某人从开发服务器中删除(使用 del 命令,而不是 svn delete)。现在的问题是我如何再次添加它,以便它再次成为 svn 的一部分。简单的 svn add 不起作用。


更新 2 从下面的一个答案中,我了解到这是一个树冲突。一些搜索把我带到了http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html。按照说明,我备份了文件,然后svn delete从各处备份。然后我svn add将它放到我的目录中,提交它并尝试更新开发和生产。最终结果是它没有去那里。也没有显示错误。

svn info在我的目录中显示文件的完整信息,但在开发和生产中显示

file_name:  (Not a versioned resource)

:S

请问还有什么想法吗?

4

3 回答 3

3

或者你可以备份文件,然后说svn revert filename插入新代码。做一个svn up只是为了确保你没有任何冲突,然后提交

或者

修复文件中的冲突,然后你可以说svn resolved filename,然后你可以继续对文件进行操作

更新:如果使用 rm 或 del 命令删除了您的文件,请使用svn revert filename将其取回并且您不必再次添加它。只需输入您的新更改并说svn ci -m"your comments" filename

svn revert 会将最后签入的副本取回到 SVN 中,并且在用户使用 del 命令之前不会对您进行任何更改

更新 2:在您说 svn delete 之后,您需要提交它,直到您收到Deleting filename带有新修订号的消息。然后使用svn add命令添加文件,然后再次提交。完成后,您可以检查 svn 信息,让我知道..

使用svn status命令知道文件的状态

除了这个我能想到的唯一问题是这个目录可能没有被添加。这是一个新目录吗?

于 2010-09-06T05:36:34.300 回答
2

啊,老树冲突问题。

问题是 SVN 让您知道您正在添加一个曾经存在的文件,但它无法判断您是要删除它、添加它还是只是更新它!所以它只能做它所能做的——标记一个冲突,这样你就可以把它整理出来并修复它。它基本上是目录级别的冲突(而不是文件内容的冲突)。

您要做的是解决错误(正如其他人指出的那样),然后更新目录以取回原始文件,然后提交您的更改。请注意,该文件从未从 SVN 中删除- 它仍在 repo 中,如果您签出新的 WC,您将获得该文件。

于 2010-09-06T11:36:15.460 回答
1

尝试解决冲突然后再次提交:

svn resolve --accept working
于 2010-09-06T05:32:38.843 回答