Сувервирование волнует меня!

У меня есть две копии сайта, одна - это производственная копия, а другая - копия разработки. Недавно я добавил все в производство в репозиторий subversion, размещенный на нашем сервере резервного копирования Linux. Я создал тег текущей версии, и я закончил.

Затем я скопировал экземпляр копии копии разработки рабочей копии (на моей локальной машине, где у меня все было проверено). Есть только 10-20 файлов, однако, когда я использую черепаховый SVN для совершения фиксации, он говорит, что каждый файл изменился. Созданный файл diff показывает, что subversion удаляет все и заменяет его новой версией (что точно так же).

Что происходит? Как это исправить?

Пример diff:

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

Ответ 1

Это, вероятно, несоответствие в конце строки. Задайте свойство 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

Ответ 2

Я вижу, что вы используете Visual Studio, так что, возможно, это связано с кодировкой файла? У меня были странные проблемы с VS-кодированием исходных файлов по-разному на двух разных машинах, хотя машины имеют одинаковые настройки языка и культуры. В VS источники выглядят одинаково, но SVN видит необработанные файлы...

Откройте две редакции в редакторе, который ничего не знает о Unicode или кодировке (я думаю, что использовал "Блокнот"?) и посмотреть, отличаются ли они. Первая строка файла содержит код, который указывает, какой тип кодирования используется. Я не знаю, как интерпретировать этот код, но, по крайней мере, вы сможете узнать, отличаются ли они.

В Инструменты → Параметры → Среда → Документы, управляющие кодировкой, есть параметры.

Ответ 3

Похоже, этот вопрос уже хорошо ответил (стиль EOL). Я просто хотел добавить еще одну вещь, которая может вызвать такую ​​проблему: Tabs vs Spaces. Если ваш текстовый редактор или IDE использует пробелы для отступов, а кто-то из вашей команды использует вкладки, SVN увидит много изменений в файле, но вы не увидите "изменения".

Ответ 4

краткосрочное решение (чтобы проверить разницу между двумя версиями): проверьте две версии для сравнения в двух отдельных каталогах и сравните каталоги с внешним инструментом diff (meld in linux, winmerge in windows). Эти инструменты могут быть сконфигурированы так, чтобы игнорировать различия в концах строк.

Изменить: для остальных, используйте решение David M (не знал, что SVN может это сделать...)