Подтвердить что ты не робот

Clearcase Vs Git контроль версий

Мы используем многопользовательский репозиторий clearcase, и часто нам требуется объединить и построить нашу систему, это слияние и репликация занимают почти 3 дня, чтобы быть доступными на всех сайтах. Следовательно, чтобы быть более эффективными, мы планируем перейти к управлению версиями Git. Не могли бы вы сообщить о потенциальном недостатке, с которым мы можем столкнуться, если перейдем к Git из Clearcase?

4b9b3361

Ответ 1

@zzz777: ваш вопрос был задан в таком центральном представлении ClearCase, что он не был понятен людям, которые раньше не использовали ClearCase. Фактически, Git - это легкие годы AHEAD ClearCase, это коммерческие SCM, которым необходимо догнать системы OSS.

У меня есть опыт работы с ClearCase и Git, и я могу сказать вам, что функция "Поиск слияния" (mis) ClearCase является результатом ее (принципиально нарушенного) дизайна на основе файлов версий, но в Git вы надеваете "Мне нужен такой примитивный инструмент, чтобы объединить в вашу частную ветвь общую ветвь. ClearCase ориентирован на файлы, а checkin файлы основаны на файлах, поэтому вам необходимо найти (файлы) для объединения утилиты, но Git основан на фиксации, и это правильная модель, поскольку, когда вы исправляете проблему или выполняете функция, весь набор изменений или ни один из них не являются единственными опциями, которые имеют смысл.

Git имеет очень мощную функцию слияния, и он делает правильные вещи, и есть два способа сделать то, что вы просите (обновление вашей частной ветки будет общим ветвью + ваши изменения).

Наиболее очевидным является слияние, поэтому пока вы в своем частном филиале:

git merge sharedbranch

тогда, если есть конфликты (действительно намного реже, чем в ClearCase), ou разрешите их и

git commit

И что это. В качестве бонуса, поскольку Git имеет всю историю локально, вам не нужно тратить бесчисленные часы, если у вас много файлов, например, в ClearCase, слияние невероятно быстро, к тому времени ClearCase в динамическом представлении делает слияние из 10 файлов, Git, вероятно, завершит слияние 100.

Использование Git merge означает, что вы сохраняете историю и если ваша история выглядела так же, как до слияния:

o---1---2---3 (sharedbranch)
 \
  a---b---c (privatebranch)

после слияния будет выглядеть так:

o---1---2---3 (sharedbranch)
 \           \
  a---b---c---m (privatebranch)

Это сохраняет историю ваших изменений и позволяет другим просматривать вашу работу.

И помните, что это НЕ истории изменений файла, это если история дерева, которая является единственной историей, которая имеет смысл хранить, даже если ветки отличаются только 1 или 2 файлами, состояние, которое вы хотите сохранить, - это дерево, а не один файл.

Второй вариант заключается в использовании rebase, что означает, что вы делаете это, как будто все ваши изменения были сделаны, начиная с последнего кода в общей ветке.

Используемая вами команда (опять же, в частной ветке):

git rebase sharedbranch

Дерево истории изменится с:

o---1---2---3 (sharedbranch)
 \
  a---b---c (privatebranch)

к

o---1---2---3 (sharedbranch)
             \
              a'--b'--c' (privatebranch)

Итак, если вы дадите Git некоторое время, чтобы понять это и немного его использовать, вы увидите, насколько лучше модель Git и как сломалась модель ClearCase.

Кстати, проблема злых двойников в ClearCase просто не существует в Git, потому что Git не отслеживает каталоги (поверьте мне, вам это НЕ нужно).

Кроме того, если у вас когда-либо была спецификация конфигурации, которая немного сложнее с несколькими ветвями, и вы перенесли файлы из одной ветки в другую, вы, вероятно, знаете, насколько важен порядок правил в спецификации конфигурации и как разочарование - видеть старые версии файлов, потому что спецификация конфигурации "неправильная". Это происходит в ClearCase из-за его базового дизайна, и, само собой разумеется, такого рода дерьмо не может произойти в git.

Итак, в заключение, Git не имеет примитивного инструмента, такого как "find merge", потому что он ему не нужен. Он имеет превосходную модель и превосходную модель слияния, которая действительно работает. Это молниеносно по сравнению с ClearCase (статический вид CCRC или динамический просмотр, вы называете его).

Единственное место, где ClearCase может иметь преимущество, - это мгновенное обновление динамического представления, но это также смягчается тем фактом, что вы можете набрать быстрее Git ветку проверки, чем вы можете обновить спецификацию конфигурации.

Ответ 2

Проблемы, которые у меня были в офисе профессиональной смешанной способности:

  • Переменная история.
    Вы можете сделать некоторые действительно глупые (и мощные) вещи с помощью GIT. Это может привести к потере источника.
  • Автоматическое слияние.
    Это лучшая функция GIT. НО, нам пришлось закрыть разработку на неделю, чтобы найти исходный код, который пропал без вести. У MSVS есть счастливая проблема со случайным изменением окончаний строк, и если вы не выходите из репозитория регулярно, это путается, и изменения теряются.
  • Заказ Push/Pull.
    Clearcase обрабатывает порядок дат и историю для вас, но git игнорирует его.
  • Подмости.
    Clearcase (по крайней мере UCM) обрабатывает продвижение ветки и другие вещи для вас. git нет. Вам нужно будет это сделать осторожно.
  • $ID $
    Не существует для GIT. Отслеживание версий из реальных выпусков и поиск проблем, зная, какая версия исходного файла должна быть обработана вручную. (Я не уверен, что ваш процесс выпуска).

Для окончательного репозитория кода я могу предложить репозиторий релиза либо другую систему управления версиями, либо отдельный репозиторий git, который управляется и принимает только притяжения.

В настоящее время я использую git для своего сольного проекта и в порядке. Но, в доме смешивания с множеством редакторов, я был бы осторожен. Вы действительно можете сбить вас с ног, не зная с помощью GIT.

Я не использовал ни hg, ни bzr. Возможно, стоит взглянуть на них, поскольку некоторые проблемы исчезнут, и у них есть функции для смягчения некоторых из вышеуказанных проблем.

Надеюсь, это поможет.

Ответ 3

Как я упоминал в "Каковы основные концепции ClearCase, которые должен знать каждый разработчик?, ClearCase может иметь некоторые" децентрализованные" функции с многосайтовыми репозиториями, но он по-прежнему является CVCS по своему ядру:

  • он имеет прочную связь с системным идентификатором пользователя (что не имеет отношения к DVCS, где нет единственного ссылочного пользователя).

  • у него есть уникальное репо для управления именами ярлыков и ветвей (admin vob), в то время как вы можете определить ветку "тест" в 15 различных репозиториях Git без проблем (кроме того, что вам нужно знать, что repo1/test означает, относительно repos2/test).

  • он также централизует определение потока слияния через иерархию потоков (UCM) (вы можете визуализировать, где вы должны объединить работу из одного потока в другой).

  • он предлагает через UCM определение подмножества кодов (компонент) с управлением зависимостями. Git имеет только подмодули, без механизма переопределения/переопределения.

  • он управляет любыми файлами, даже большими двоичными файлами, в то время как DVCS (любой вид DVCS) лучше управляет только исходным кодом.

Нижняя строка (в нашей миграции с ClearCase на Git) заключается в том, что она включает в себя довольно много рефакторинга/реорганизации исходного кода, чтобы иметь управляемые репозитории Git.

Ответ 4

Я работал как с Git, так и с ClearCase, и как только вы узнаете, как использовать Git, а затем создайте переключатель, вы никогда не оглядитесь назад. Удостоверьтесь, что у вас есть время для обучения ваших разработчиков - это должно быть вашим главным приоритетом. Git - совсем другой подход к SCM, чем ClearCase.

Некоторые вещи для рассмотрения (возможные минусы):

  • Вам понадобится настоящий мастер репо, а не только кто-то, кто будет следить за источником, но тот, кто понимает, как работает SCM (а не только то, что графический пользователь отображает) и может обрабатывать вашу модель ветвления (см. № 2)
  • Принять/разработать прочную модель ветвления. Отличный пример, и я использовал http://nvie.com/posts/a-successful-git-branching-model/
  • Вам нужно будет потратить много времени, помогая своим разработчикам переучивать все, что, как они думали, вы знали об использовании/взаимодействии с SCM.

Если вы можете преодолеть три вышеизложенных, то там очень мало недостатков (№ 3 является самым сложным). Что касается @PAntoine, большинство из этих проблем связаны с обучением - № 1 необходимо будет потребовать по-настоящему плохого решения потерять исходный код. git reflog предоставит вам доступ к каждой фиксации для репо. Единственный способ уничтожить источник - через git reflog expire --expire=whatever refs/heads/master, git fsck --unreachable, git prune и git gc, который должен обрабатываться только мастером репо, а затем существует универсальная проблема разработчика, не передающего свой источник (D'ах!)

Ответ 5

Вам нужен инструмент, который поможет вам в управлении конфигурацией программного обеспечения (SCM) или в вашем управлении версиями [system] (VCS)?

То, что обсуждает обсуждение ClearCase vs Git.

Итак, вы сравниваете яблоки с апельсинами.

Размышление о ClearCase как о другом VCS - это узкое представление о том, что такое ClearCase; придерживайтесь ClearCase, если ваша цель - доставка нужного продукта из вашего магазина.

С другой стороны, Git, вероятно, является лучшим VCS на рынке в данный момент (хотя он не предлагает поддержки SCM), поэтому вы переключаетесь на него, если ваша проблема связана с ветвлением и слиянием.... (a обратите внимание, что конфликты слияния являются результатом плохо установленной базовой линии и неправильно настроенных просмотров)... Репликация VOB отстой - я вам это даю.

Недостатком запланированного шага является то, что вы выбросите поддержку инструментальных средств SCM. И вам придется столкнуться с множеством других инструментов и много ручной работы, чтобы добиться того, что у вас было из коробки с помощью ClearCase.

В любом случае хороший VCS является основой любого SCM, поэтому ваш переход к Git может быть отдален в долгосрочной перспективе.