Вот метод, позволяющий избежать взломов, который наша команда использовала этот метод довольно успешно в течение более года, пока мы не удалили ClearCase для Subversion (согласно политике компании, хотя это является шагом назад для нашей команды - мы в основном просто использовали ClearCase как тупая файловая система, и фактически работает в git, но теперь мы используем мост git-svn, который не так хорош, как нативный git.)
Мы использовали два каталога, один для снимка ClearCase и главного репозитория git, который мы разделили для всей команды и никогда не редактировали файлы, а другой для нашего «рабочего» каталога.
Подготовка в представлении снимка экрана ClearCase:
% git init
% git add **/*.cxx **/*.h **/Makefile (and so on)
% git commit -m "initial"
Затем клонируйте в свой рабочий каталог:
% mkdir ~/work
% git clone /path/to/repo
Работа в рабочем каталоге, на ветке:
% git checkout -b feature
% ...edit/compile...
% git add -u
% git commit
Убедитесь, что снимок ClearCase обновлен до нетронутым (что всегда было для нас, потому что мы поделились им в команде и все использовали git).
Затем объедините ветвь с мастером, перебазировав его, чтобы избежать автоматического слияния:
% git checkout master
% git pull
% git checkout feature
% git rebase master
% git checkout master
% git merge feature
% git branch -d feature
% git diff --name-status origin/master
Подготовьте представление ClearCase, проверив / mkelem / rmname все измененные / новые / удаленные файлы,
исходя из вывода git diff --name-status
. Для этого мы использовали скрученный вручную скрипт. Не забудьте проверить каталоги, в которых были добавлены / удалены файлы:
Затем отодвиньте git и вернитесь с помощью ClearCase:
% git push
% cd /path/to/repo
% git reset --hard
% cleartool ci `cleartool lsco -r -short -me`
Вроде бы много команд, но это включает в себя настройку, и ваш ежедневный рабочий процесс не использует много команд. Вы можете тривиально создать сценарий на шаге push-back-to-ClearCase и постепенно обнаруживать / показывать своей команде все классные дополнительные элементы git по мере того, как все привыкнут к основному рабочему процессу.
Настоящая прелесть этой системы в том, что через некоторое время, когда все будут компетентны с git, вы можете тривиально отказаться от ClearCase и от всех связанных с ней индивидуальных работ и сборов обезьян. Может быть, дать парню компании ClearCase столь необходимый отпуск и некоторую переподготовку с экономией. (К сожалению, в моей компании все эти мерзавцы были скунс-рунами, и мы перешли на Subversion - вперед из ClearCase, но назад из git!)
I настоятельно рекомендуется использовать сценарий pristine
из ClearCase Global, Git Locally , который выполняется в представлении снимка экрана ClearCase и обеспечивает синхронизацию между ним и git. Мы настроили это как работу cron, которая выполнялась два раза в день, а также запускали ее вручную, когда мы собирались вернуться к git.
К сожалению, ссылка на сообщение в блоге больше не действительна. Однако скрипт все еще доступен на Github .