颠覆吓坏了我!

时间:2010-05-14 18:11:18

标签: svn

我有两个网站副本,一个是生产副本,另一个是开发副本。我最近将生产中的所有内容添加到我们的linux备份服务器上托管的subversion存储库中。我创建了当前版本的标签,我就完成了。

然后我复制了生产副本的开发副本(在我检查了所有内容的本地机器上)。只有10-20个文件被更改,但是,当我使用tortoise SVN进行提交时,它表示每个文件都已更改。生成的diff文件显示subversion删除所有内容,并将其替换为新版本(完全相同)。

发生了什么事?我该如何解决?

示例差异:

Index: C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html
===================================================================
--- C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html   (revision 5)
+++ C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html   (working copy)
@@ -1,4 +1,4 @@
-<html>
-<body bgcolor="#FFFFFF">
-</body>
+<html>
+<body bgcolor="#FFFFFF">
+</body>
 </html>
\ No newline at end of file

4 个答案:

答案 0 :(得分:8)

这可能是行尾不匹配。在所有文件上设置属性svn:eol-style=native

http://svnbook.red-bean.com/en/1.5/svn.advanced.props.file-portability.html#svn.advanced.props.special.eol-style

默认情况下,您可以让Subversion在所有新文件上设置此属性:

http://svnbook.red-bean.com/en/1.5/svn.advanced.props.html#svn.advanced.props.auto

这是〜/ .subversion / config中的内容:

enable-auto-props = yes

### Section for configuring automatic properties.
[auto-props]
### The format of the entries is:
###   file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?').  All entries which match will be applied to the file.
### Note that auto-props functionality must be enabled, which
### is typically done by setting the 'enable-auto-props' option.
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
# *.dsp = svn:eol-style=CRLF
# *.dsw = svn:eol-style=CRLF
*.sh = svn:eol-style=native;svn:executable=*
*.txt = svn:eol-style=native
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
*.jpeg = svn:mime-type=image/jpeg
Makefile = svn:eol-style=native
*.tmpl = svn:eol-style=native
*.gif = svn:mime-type=image/gif
*.t = svn:eol-style=native;svn:executable=*
*.pm = svn:eol-style=native
*.pl = svn:eol-style=native;svn:executable=*
*.cgi = svn:eol-style=native;svn:executable=*
*.js = svn:eol-style=native;svn:mime-type=application/x-javascript
*.dtd = svn:eol-style=native;svn:mime-type=application/xml-dtd
*.txt = svn:eol-style=native;svn:mime-type=text/plain
*.html = svn:eol-style=native;svn:mime-type=text/html
*.yicf = svn:eol-style=native
*.xml = svn:eol-style=native;svn:mime-type=text/xml
*.sgml = svn:eol-style=native;svn:mime-type=text/sgml
*.xul = svn:mime-type=application/vnd.mozilla.xul+xml
*.tt = svn:eol-style=native

答案 1 :(得分:0)

我看到你正在使用Visual Studio,所以它可能与文件编码有关吗?虽然机器具有相同的语言和文化设置,但我在两个不同的机器上对VS编码源文件有不同的奇怪问题。在VS中,源看起来完全一样,但SVN看到了原始文件......

在一个对Unicode或编码一无所知的编辑器中打开两个版本(我想我用的是记事本?),看看它们是否不同。该文件的第一行包含一个代码,指示正在使用的编码类型。我不知道如何解释该代码,但至少你能够判断它们是否不同。

工具中有选项 - &gt;选项 - &gt;环境 - &gt;控制编码的文件。

答案 2 :(得分:0)

听起来这个问题已经得到了很好的回答(EOL风格)。我只是想添加一个可以触发这样的问题:Tabs vs Spaces。如果您的文本编辑器或IDE使用空格进行缩进,并且团队中的其他人使用Tabs,SVN将看到大量文件更改,但您不会“看到”更改。

答案 3 :(得分:-1)

短期解决方案(检查两个版本之间的差异):在两个单独的目录中查看要比较的两个版本,并将这些目录与外部差异工具进行比较(linux中的meld,windows中的winmerge)。可以将这些工具配置为忽略行尾差异。

编辑:其余的,使用David M的解决方案(不知道SVN可以管理...)