SVN diff помечает все строки кода как новые, когда программист ПК обновляет файл, недавно переданный Mac Programmer - PullRequest
1 голос
/ 03 февраля 2010

Вот сценарий, с которым я сейчас сталкиваюсь:

  1. Программист A (с использованием версии Dreamweaver для Mac) редактирует файл client.php и фиксирует этот файл в производственной ветви репозитория Project Foo
  2. Программист B (используя версию Dreamweaver для Windows) редактирует файл client.php, чтобы исправить ошибку в этом файле. Затем он делает cp clientInfo.php ../prod-branch/clientInfo.php, чтобы перенести это исправление ошибки из своей рабочей копии в производственную ветвь.
  3. Программист B затем делает svn diff ../prod-branch/clientInfo.php, чтобы увидеть, что svn говорит, что его изменения были только для того, чтобы обнаружить, что svn говорит, что он изменил каждую строку в файле!

Так вот, я верю, что это происходит:

Когда файл редактируется Mac, Dreamweaver на Mac заменяет все символы новой строки Windows на символы новой строки Mac, чтобы его можно было прочитать в Dreamweaver. Короче говоря, Dreamweaver изменил каждую строку в файле. Теперь, когда фиксация завершена, svn видит, что каждая строка файла изменилась, и отмечает этот факт. Когда Windows-программист вносит изменения и символы новой строки снова меняются, svn думает, что снова каждая строка изменилась.

Мой вопрос таков: как мы можем предотвратить это? Я знаю, что нет никакого способа исправить ущерб, который уже был причинен, но я хочу предотвратить это в будущем.

Ответы [ 3 ]

4 голосов
/ 03 февраля 2010

Вам необходимо использовать свойство "svn: eol-style" во всех текстовых файлах. Обычно его установки на «родной» будет достаточно

2 голосов
/ 04 февраля 2010

Dreamweaver имеет возможность указать, какой тип разрыва строки он использует. Правка (на Mac: Dreamweaver) -> Настройки, Формат кода, Тип разрыва строки.

Сделайте так, чтобы у ваших пользователей были одинаковые настройки, и все должно играть немного лучше вместе. Конечно, было бы лучше, если бы вы могли настроить свой источник управления, чтобы игнорировать различия в переводе строк.

2 голосов
/ 03 февраля 2010

svn:eol-style - это свойство, которое может быть установлено централизованно в хранилище и должно решить вашу проблему.

Ознакомьтесь с главой Последовательности новой строки в книге Subversion.

Решением этой проблемы является свойство svn: eol-style . Когда этому свойству присвоено допустимое значение, Subversion использует его, чтобы определить, какую специальную обработку нужно выполнить с файлом, чтобы стиль окончания строки файла не переворачивался при каждой фиксации, поступающей из другой операционной системы. Допустимые значения:

...