Я недавно использовал git svn
и обладаемый это очень. Теперь я запускаю новый проект в другом клиенте. На том сайте предпочтительным SCM является ClearCase. Я не нашел испеченный эквивалент git svn
для ClearCase. Есть ли кто-либо, кто попытался использовать мерзавца локально в качестве фронтенда к ClearCase с помощью некоторых приемов, конфигурации или пишущий сценарий с какой-либо мерой успеха? Раз так можно ли объяснить используемый метод?
Вот метод, позволяющий избежать взлома, и наша команда довольно успешно использовала этот метод более года, пока мы не отказались от ClearCase для Subversion (в соответствии с политикой компании, хотя для нашей команды это шаг назад - мы в основном просто использовали ClearCase. как тупая файловая система и практически работает изначально в git, но теперь мы используем мост git-svn, который не так хорош, как собственный git.)
Мы использовали два каталога, один для снимка ClearCase и главный git repo, который мы разделили для всей команды и никогда не редактировали файлы, и один для нашего «рабочего» каталога.
Подготовка в представлении снимка 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 столь необходимый отпуск и немного переобучиться на сэкономленные средства. (К сожалению, в моей компании вся эта штука с git была скунсом, и мы перешли на Subversion - вперед от ClearCase, но обратно от git!)
Я настоятельно рекомендую вам использовать безупречный
] из ClearCase Globally, Git Locally , который запускается в режиме моментального снимка ClearCase и обеспечивает синхронизацию между ним и git. Мы настроили это как задание cron, которое запускалось дважды в день, а также запускали его вручную всякий раз, когда мы собирались вернуться к git.
К сожалению, ссылка на сообщение в блоге больше недействительна. Однако скрипт все еще доступен на Github .
Обычно я следую следующему процессу:
view/vobs/myComponent
Это позволяет мне рассматривать компонент ClearCase как Git-репо.
Затем я могу делать все ветвления и "приватные" коммиты, какие захочу, в этом репозитории, делая файлы доступными для записи по мере необходимости (это возможно в рамках представления снимков).
Как только у меня есть стабильный финальный коммит, я обновляю представление моментального снимка, в котором перечислены все "захваченные" файлы: Я проверяю их и регистрирую обратно в ClearCase.
Учитывая ограничения Git, репо на компонент ClearCase (UCM) - это правильный размер для Git-репо.
См. также Какие основные концепции ClearCase должен знать каждый разработчик? для сравнения ClearCase и Git.
Идея остается:
Хотя оно может быть не лишено некоторых недостатков (вы были предупреждены), я чувствую, что должен упомянуть, что написал своего рода мост.
http://github.com/charleso/git-cc
Установить мост между двумя системами нелегко, и я хотел бы, чтобы мое решение было хотя бы наполовину так же хорошо, как git-svn. Большим ограничением является то, что вы действительно ограничены зеркалированием одного потока; git-cc не может клонировать все ваши ветки Clearcase (как бы хорошо это ни было). Однако, учитывая, что большинство альтернативных скриптов работают с одним видом Clearcase, вы не хуже (IMO).
Лично я считаю историю очень важной, и чего не хватает другим решениям, так это импорта истории в Git. Возможность запустить git-blame на файлах и увидеть их настоящих авторов очень полезна время от времени.
Если ничего другого нет, git-cc может обрабатывать вышеупомянутый шаг 'git log --name-status' в решении Мэтта выше.
Мне, конечно, интересно услышать, что VonC и Мэтт (и другие) думают об этом, поскольку я согласен, что любой мост к Clearcase чреват трудностями и может оказаться больше проблем, чем того стоит.