2017-02-22 2 views
1

Я спросил пару дней назад 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 это первый). Но я не уверен, какое заклинание нужно использовать точно и будет ли это обрабатывать случаи, когда какое-то имя изменилось различными способами (например, из файла в каталог или из каталога в символическую ссылку или из символической ссылки на файл) или как переименования обрабатываются с точки зрения история.

ответ

1

Вы видите какие-либо проблемы с вышеуказанным подходом с точки зрения истории и т. Д.?

Да вы не должны ничего rm при использовании clearfsimport.
Просто импортируйте в ту же папку просмотра/назначения, и ClearCase обнаружит для вас новый/измененный/удаленный файл, будет проверять, обновлять или удалять соответственно эти файлы.

Добавьте -rmname option к вашим clearfsimport и ClearCase убеждается «зеркало» ваш импорт, то есть удаленный файл в папке будет также будут удалены в папке назначения.

«заклинание для использования» такое же, как и раньше, только с дополнительным параметром -rmname.

+0

Я просто немного неловко, что 'clearfsimport' будет делать правильные вещи, когда дело доходит до имен, чьи типа изменился (например, из файла в символическую ссылку или из символической ссылки в каталог), поэтому я думал, что 'ct rm' приведет к чистому сланцу. Но я понимаю, что ваш ответ заключается в том, чтобы просто доверять 'clearfsimport', чтобы делать правильные вещи ... –

+0

@MarcusJuniusBrutus Я согласен, это нужно вложить в крайние случаи, но в общем случае' clearfsimport' сделан для этого варианта использования , – VonC

+0

@MarcusJuniusBrutus Проблема с rm заключается в том, что вы полностью потеряли историю для всех распространенных файлов, которые были изменены. ClearCase увидит их как новые элементы без истории. – VonC

0

Вы не рассматривали использование моментальных копий и работать непосредственно в ClearCase, это будет просто ваш подход

Смежные вопросы