Как я могу импортировать структуру каталогов в SVN, сохраняя даты изменения файлов и папок одинаковыми?

У меня есть большое исходное дерево (> 2 ГБ, дерево сборки WINCE), которым я хотел бы начать управлять с помощью Subversion. До этого момента управление версиями осуществлялось за счет сохранения нескольких копий дерева и использования Beyond Compare для поиска различий.

Последним большим камнем преткновения, который я вижу в использовании Subversion, является то, что он изменяет метку времени файла на время фиксации. Это делает сравнения Beyond Compare намного более трудоемкими, поскольку для поиска изменений необходимо выполнить бинарное сравнение.

Я просмотрел ветку версия метаданных исходное дерево subversion, но я бы предпочел не пытаться объединять этот код из 2006 года с текущим исходным кодом svn.

Спасибо,

Дэйв


person DavidEBest    schedule 04.11.2008    source источник


Ответы (4)


Существует параметр конфигурации svn, который управляет тем, как временные метки хранятся в репозитории:

use-commit-times

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

В других ситуациях, однако, иногда полезно, чтобы файлы рабочих копий имели метки времени, отражающие время их последнего изменения в репозитории. Команда svn export всегда размещает эти «отметки времени последней фиксации» в деревьях, которые она создает. Если установить для этой переменной конфигурации значение yes, команды svn checkout, svn update, svn switch и svn revert также будут устанавливать временные метки последней фиксации для файлов, к которым они относятся.

См. Область конфигурации времени выполнения и Конфигурация Параметры

Кстати, Beyond Compare потрясает! Я использую все упомянутые, svn diff, TortoiseMerge и BC2. BC2 является наиболее полным.

person Ken Gentle    schedule 04.11.2008

Subversion сделает сравнение намного быстрее, чем даже вне сравнения.

Если вы используете tortoiseSVN, вы даже можете использовать вне сравнения как внешний инструмент Diff.

person Peter Parker    schedule 04.11.2008
comment
Это была проблема с пользователем, а не с системой, которая не делала то, что должна. Спасибо за быстрый ответ. - person DavidEBest; 04.11.2008

После быстрой проверки: если вы фиксируете файл из своей рабочей копии, он сохраняет свою временную метку (время последней модификации). Даже после обновления (без дальнейших удаленных изменений этого файла) в файле сохраняется отметка времени последней модификации. Тест проводился на Linux с версией Subversion 1.4.6.

Если вы обновляете файл, который был изменен удаленно, он получает новую отметку времени.

Таким образом, вы сохраняете временные метки последней модификации.

Кроме того: почему вы хотите использовать «Beyond Compare» для различий. Вам больше не нужно будет хранить разные каталоги для отображения разных версий. И у subversion есть собственная функция diff для подготовки diff для комбинаций ревизий.

person Mnementh    schedule 04.11.2008
comment
Это была проблема с пользователем, а не с системой, которая не делала то, что должна. Спасибо за быстрый ответ. - person DavidEBest; 04.11.2008

Необходимо ли установить «use-commit-times» в yes для каждого конфигурационного файла m/c клиента ИЛИ есть ли возможность централизовать это в каталоге установки Subversion?

person user1587504    schedule 21.09.2012