Я спросил пару дней назад how to commit an arbitrary directory tree in ClearCase, и я получил ответ, чтобы использовать инструмент clearfsimport
. Это работало безупречно до сих пор и может «импортировать» в ClearCase (на динамическое представление) произвольные деревья каталогов (из некоторого внешнего каталога файловой системы):Как выполнить обновление в произвольном дереве каталогов
clearfsimport -recu -nset /some/external/directory/foo .
Мой рабочий является то, что я делаю все мои работы и тестирование в этом внешнем каталоге (foo
), и когда я счастлив, я передаю свои источники в ClearCase с помощью инструмента clearfsimport
, как описано выше. Это до сих пор работало в первоначальной фиксации, но теперь я обнаружил, что хочу импортировать измененные источники. Фактически мне нужно импортировать вместо существующего каталога foo
новое дерево каталогов. Изменения могут быть повсеместными: файлы/каталоги добавлены, удалены или переименованы, файлы изменены в каталоги или символические ссылки (и наоборот). Эффективно мы можем говорить о двух очень разных деревах каталогов с очень подробным выводом diff -r
.
Я планирую использовать следующий рабочий процесс:
ct co .
ct rm foo // remove existing dir from view
ct ci .
clearfsimport -recu -nset /some/external/directory/foo . // import the new dir version
Видите ли вы какие-либо проблемы с вышеизложенным подходом с точки зрения истории, и т.д.?
Для полного раскрытия я поддерживаю свой проект (в /some/external/directory
) с помощью Git и поэтому я создать «чистую» копию моего проекта перед запуском clearfsimport
(удаление GIT конкретных файлов, таких как .git
, .gitignore
и т.д.). Обычно у меня более подробная история в git, но меня интересует только история конкретных примечательных «этапов» в ClearCase для других членов команды, которые могут захотеть взглянуть на мой код и его эволюцию с течением времени. Тем не менее, я не хочу (на данный момент, по крайней мере) использовать любые инструменты для подключения git к ClearCase и предпочитаю держать вещи простыми.
Я уточняю, что рабочий процесс, который я пытаюсь установить, является только одним способом (внешний каталог для ClearCase) и что я импортирую его в динамическое представление.
Глядя на странице человека для clearfsimport
я вижу что-то вроде «два прохода» упоминаются и варианты, как -rmname
, которые делают меня вещь, что можно просто запустить clearfsimport
с целью Будучи существующей структурой каталога (т.е. без имеющий ct rm
это первый). Но я не уверен, какое заклинание нужно использовать точно и будет ли это обрабатывать случаи, когда какое-то имя изменилось различными способами (например, из файла в каталог или из каталога в символическую ссылку или из символической ссылки на файл) или как переименования обрабатываются с точки зрения история.
Я просто немного неловко, что 'clearfsimport' будет делать правильные вещи, когда дело доходит до имен, чьи типа изменился (например, из файла в символическую ссылку или из символической ссылки в каталог), поэтому я думал, что 'ct rm' приведет к чистому сланцу. Но я понимаю, что ваш ответ заключается в том, чтобы просто доверять 'clearfsimport', чтобы делать правильные вещи ... –
@MarcusJuniusBrutus Я согласен, это нужно вложить в крайние случаи, но в общем случае' clearfsimport' сделан для этого варианта использования , – VonC
@MarcusJuniusBrutus Проблема с rm заключается в том, что вы полностью потеряли историю для всех распространенных файлов, которые были изменены. ClearCase увидит их как новые элементы без истории. – VonC