提交svn会添加其他文件

时间:2012-01-11 21:19:31

标签: svn version-control command-line

问题是svn on commit添加了尚未更新的其他文件。

示例:

svn st

这表示file1已更改

svn commit

这会上传file1以及file2, file3, file4

中的更改

这总是发生在同一个文件

file2, file3, file4

我该怎么办?

SVN版本:

  

Subversion命令行客户端,版本1.6.6

2 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的Subversion客户端?

在pre-subversion 1.7客户端中,Subversion通过查看文件内容和.svn目录中存储的基础来确定文件更改。 Subversion比较文件本身的属性和内容,以确定任何更改。例如:

$ svn up
U file1
U file2
U file3

在此示例中,您至少会看到以下六个文件:

.svn/text-base/file1.svn-base
.svn/text-base/file2.svn-base
.svn/text-base/file3.svn-base
.svn/prop-base/file1
.svn/prop-base/file2
.svn/prop-base/file3

它不会查看时间戳来确定文件是否已更改(如Makefile所有)。

svn upsvn commit都使用相同的算法来确定是否应将文件记录为已修改。

还有一个名为.svn/entries的文件,其中包含目录所具有的条目列表。这允许Subversion跟踪添加和删除,但它不用于检测更改。

我在合并期间看到了提交未更改文件的问题。但是,这在执行svn status时始终显示,文件内容未更改,但属性svn:merge info为。

您的问题似乎非常不同。首先,在执行svn status时,您没有看到更改,但它们确实已提交。如果您在目录上执行svn -v log该怎么办?文件是否显示为已更改?如果你做svn status -v怎么办?这将显示所有文件,包括被忽略的文件和尚未更改的文件。

客户端告诉服务器哪些文件已被更改,而不是服务器确定要提交哪些文件。因此,问题在于您的Subversion客户端:

您的Subversion客户端是什么?您拥有什么操作系统?我知道Cgywin可能会有问题 - 特别是如果你与Windows Subversion客户端共享你的工作目录。在两种不同类型的客户端(如GUI客户端和命令行客户端)之间共享工作目录可能存在一些问题。例如,VisualStudio的AnkhSvn客户端创建_svn目录。 TortoiseSVN可以使用它们(如果你正确配置),但不能使用标准的Subversion命令行。

当然,1.7命令行客户端与早期的命令行客户端不同。在标准1.7命令行客户端中,.svn目录仅在根目录中,我相信它使用校验和来确定文件的内容是否已更改。

抱歉,我无法提供任何进一步的帮助。也许我给你一些东西继续?让我知道您的Subversion客户端和操作系统,这可能会有所帮助。如果您在同一目录中使用多个Subversion客户端,也请告诉我。这也许是一个线索。

我已经尝试进入$HOME/.subversion/conf,看看是否有任何设置可能有所作为,但我发现没有任何可能导致此行为。

答案 1 :(得分:0)

好吧,如果你想永远忽略你可以使用svn:ignore的文件,但是如果它们是你有时会改变的文件,你需要让它们处于源代码管理下,我会做svn diff file1然后去从那里。它们是什么类型的文件以及diff的结果是什么?