Каковы основные концепции clearcase, которые должен знать каждый разработчик? [закрытый]


каковы основные концепции системы управления версиями Clearcase, которые должен знать каждый разработчик?

12 65

12 ответов:

базовый понятий?

  • централизованный (- реплицированный) VCS: ClearCase находится на полпути между централизованным миром VCS (один или несколько "централизованных" репозиториев или VOBS - базы объектов версии - каждый разработчик должен получить доступ к фиксации) и распределенным миром VCS.
    Но он также поддерживает "реплицированный" режим, позволяющий реплицировать РЕПО на удаленном сайте (MultiSite ClearCase), отправлять дельты и управлять собственностью. (лицензионные сборы, прилагаемые к этому, довольно крутые)
    Это не настоящая "децентрализованная" модель, так как она не допускает параллельности одновременно evolutions: ветви осваиваются в одном VOB или другом; вы можете только зарегистрироваться в главном VOB для ветвей, освоенных там, хотя у вас есть доступ только для чтения к любой ветви в любой реплике.

  • хранение линейной версии: каждый файл и каталог есть линейная история; нет прямой связи между ними, как DAG VCS (Направленный Ациклический Граф), где история файла связана с одним из каталогов, связанных с фиксацией.
    Это значит

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

      (Git находится на противоположном конце этого спектра, будучи одновременно децентрализованным и ориентированным на DAG:

      • если узел его графа имеет тот же" идентификатор", что и узел другой фиксации, он не должен исследуйте дальше: все подграфы гарантированно будут идентичны
      • слияние двух ветвей на самом деле является слиянием содержимого двух узлов в DAG: рекурсивным и очень быстрым для поиска общего предка)

alt-текст http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m0/topic/com.ibm.rational.clearcase.hlp.doc/cc_main/images/merg_base_contrib.gif

  • 3-путь слияния: чтобы объединить две версии, ClearCase должен найти общий вклад в их линейную историю, который может быть довольно долго для сложной версии дерева (филиала/отделения/суб-/филиала ...), и основной ClearCase merge команда объединяет файл или каталог, но это не рекурсивно. Он влияет только на файл паленого или один каталог без его файлов (ct findmerge рекурсивная)

  • file-centric (в отличие от других недавних VCS, более ориентированных на репозиторий): это означает, что фиксация файла по файлу, а не "набор измененных файлов": транзакция находится на уровне файла. Фиксация нескольких файлов не является атомарной.
    (Почти каждый второй современные инструмент "репозиторий Центральный", с атомной фиксацией транзакции, но системы первого поколения, такие как RCS, SCCS, CVS и большинство других старых систем, не имеют этой функции.)

  • id-managed: каждый файл и каталог имеет уникальный идентификатор, то есть они могут быть переименованы по желанию: их история не изменится, так как идентификатор остается для "элемента". Плюс каталог будет обнаруживать в своей истории любое добавление / подавление файла. Когда файл "удален" (rmname), он этого не знает: уведомляется только каталог и создает новую версию в своей истории, со списком подэлементов, не включая файл удален.

(создайте два файла с одинаковым размером и содержимым, они получат один и тот же идентификатор в Git-ключ SHA1-и будут храниться только один раз в репозитории Git! Не так в ClearCase.
Кроме того, если два файла с одинаковым путем и именем создаются в двух разных ветвях, их идентификатор отличается, что означает, что эти два файла никогда не будут объединены: они называются "зло Близнецы")

  • филиалы-это первоклассные граждане: большинство VCS рассматривают ветвь и тег как одно и то же: одна точка в истории, из которой может вырасти новая линейная история (ветвь) или откуда прикреплено описание (тег).
    Не так для ClearCase, где ветвь-это способ ссылаться на номер версии. Любой номер версии начинается с 0 (просто упоминается в ClearCase) до 1, 2, 3 и так далее. Каждая ветвь может содержать новый список версий цифры (0, 1, 2, 3 снова).
    Это отличается от других систем, где номер версии уникален и всегда растет (например, версии в SVN), или просто уникален (например, ключи SHA1 в Git).

  • путь доступа: чтобы получить доступ к определенной версии файла/каталога, необходимо знать его расширенный путь (состоящий из ветвей и версий). Он называется "расширенный путь":myFile@@/main/subBranch/Version.

(Git действительно относится к все через ИД в формате SHA1 -- основе --: версия [или совершить], дерево [или версия каталога] и BLOB [или версии файла, или, скорее,контент из файла]. Так это "код доступа" или "ID-ссылки".
Для ClearCase идентификатор относится к" элементу": каталогу или файлу, независимо от его версии.)

  • как пессимистический замок, так и оптимистический замок: (зарезервированные или незарегистрированные проверки в ClearCase): даже пессимистичный замок (reserved checkout) не является истинным пессимистичным, так как другие пользователи все еще могут проверить этот файл (хотя и в "незащищенном режиме"): они могут изменить его, но им придется ждать, пока первый пользователь зафиксирует свой файл (checkin) или отменит запрос. Затем они объединят свою версию проверки того же файла.
    (Примечание: "зарезервированная" проверка может освободить свою блокировку и быть отменена владельцем или администратором)

  • дешевые ветвления: a ветка не вызывает копирование всех файлов. На самом деле это ничего не вызывает: любой файл, не проверяющий, останется в своей исходной ветке. Только измененные файлы будут иметь свои новые версии, хранящиеся в объявленной ветви.

  • квартиры-хранилище файлов: VOBs хранятся в собственном формате с простыми файлами. Это не база данных с простым языком запросов.

  • доступ к локальному или сетевому рабочему пространству:

    • локальное рабочее пространство через извлечение на жесткий диск ("обновление" представления моментального снимка).
    • сетевое рабочее пространство - это динамическое представление, объединяющее доступ к версионным файлам и каталогам через сеть (без локальной копии, мгновенный доступ) и локальные файлы (те, которые извлечены или частные файлы). Сочетание удаленных (версионных) и локальных (частных) файлов позволяет динамическому представлению выглядеть как классический жесткий диск (тогда как на самом деле любой файл "записано" хранится в соответствующем хранилище представлений).
  • централизованное депортированное хранение: [view] хранение там, чтобы сохранить некоторые данные и избежать некоторых или любой связи с центральным референтным.
    рабочее пространство может иметь:

    • рассеянное хранение: как .svn подкаталоги повсюду
    • централизованное хранение: как хранение взгляда в ClearCase, они содержат информацию о файлы, отображаемые представлением, и это хранилище является уникальным для представления.
    • депортированное хранилище: хранилище не является частью самого представления / рабочей области, но может быть расположено в другом месте на компьютере или даже снаружи в локальной сети/WAN

(Git не имеет "хранения" как такового. Его .git на самом деле все репозитории!)

  • мета-данных, ориентированные: любой "ключ-значение" может быть прикреплен к файлу или каталогу, но эта пара данных не historized себя: если значение изменяется, он замещает старое значение.

(что означает, что механизм на самом деле слабее, чем система "свойств" SVN, где свойства могут иметь историю;
Git на другом конце не слишком увлекается метаданными)

ClearCase-это зверь для использования. Медленно, багги и дорого. Некоторые вещи, которые я сделал, чтобы справиться с использованием CC являются:

  1. всегда ставить хорошие комментарии, когда вы регистрируетесь.
  2. используйте общую спецификацию конфигурации и не меняйте ее очень часто.
  3. никогда не пытайтесь использовать CC через VPN или медленное сетевое подключение.
  4. выключите загрузку CC doctor при запуске.
  5. не перемещайте файлы в разные каталоги.
  6. расписание минимум 2 мин на файл для проверки.
  7. просмотры моментальных снимков медленнее, но динамические представления медленнее.
  8. сделайте привычку развития проверять внутри раньше и часто потому что зарезервированные архивы и слияния тягостны.
  9. все разработчики проверяют файлы в unreserved по умолчанию.

мы используем CC уже более пятнадцати лет. Он имеет много хороших функций.

все наши разработки сделаны на ветках; я создал пару сегодня, для нескольких различных наборов изменений. Когда я зарегистрировался в ветке, я получил коллегу, чтобы просмотреть изменения, а затем слился обратно в /main/LATEST - который, оказывается, там, где моя работа должна была идти. Если бы это было для более старого выпуска на ветке, это не было бы сложнее.

слияния мои временные ветви были полностью автоматическими; никто не изменил файлы, над которыми я работал, пока я их проверял. Хотя по умолчанию проверки зарезервированы (заблокированы), вы всегда можете отменить проверку позже или создать проверку без сохранения. Когда изменения занимают несколько дней, повторная синхронизация моей временной ветви с основной ветвью легко и обычно автоматически. Mergetool в порядке; самая большая проблема для меня заключается в том, что моя серверная машина находится в 1800 милях или около того от моего офиса (или домой), так что X на этом расстоянии немного медленный (но не невыносимо). Я не использовал лучший mergetool, но это может быть не так много, так как я не использовал никакой другой графический mergetool.

представления (динамические представления) быстро на нашей установке. Я не использовал представления моментальных снимков, но я не работаю в Windows, когда могу помочь (наша команда использует представления моментальных снимков в Windows; я не понимаю, почему). У нас есть сложные разветвленные системы, но основная разработка выполняется на / main / LATEST, а выпускная работа выполняется на ветке. После GA работа по техническому обслуживанию выполняется в конкретной ветви выпуска и объединяется вперед в /main/LATEST (через любые промежуточные версии).

CC действительно нуждается в хороших администраторах-они у нас есть, и нам повезло в этом.

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

Я не вижу, чтобы офис переключался с CC в любое время.


встроенные номера версий - добро или зло?

я писал:

самая большая проблема, которую я имею с CC, заключается в том, что он не вставляет номера версий в исходные файлы - проблема, которую git тоже имеет, AFAICT. Я наполовину понимаю, почему; я не уверен, что мне нравится отказываться от этой отслеживаемости. Так, Я все еще использую RCS (даже не CVS) для большей части моей личной работы. Однажды я могу переключиться на git - но это будет толчок, и потребуется много работы, чтобы перепрограммировать системы выпуска, настроенные вокруг (SCCS и) RCS.

в ответ @VonC отмечает:

как получить версию файла Clearcase внутри файла Java. Конечно, вы можете использовать триггер для замены ключевых слов RCS (Clearcase Руководство: Проверка Триггера Пример) при условии, что вы используете соответствующий менеджер слияния.

есть несколько вопросов, затронутых в этой дискуссии, и все они смешиваются вместе. Мои взгляды граничат с архаикой, но у них есть обоснование, и я собираюсь потратить время, чтобы записать их (испорченный жизнью - для завершения может потребоваться несколько правок этот.)

фон

Я узнал SCCS еще в 1984 году, примерно в то время, когда RCS был выпущен (1983, я считаю), но SCCS был на моей машине, и интернет в лучшем случае зарождался. Я перешел от SCCS к RCS неохотно в середине 90-х годов, потому что формат даты SCCS использует двузначные цифры в течение многих лет, и было неясно, будут ли SCCS универсально фиксированы во времени (это было). В некоторых отношениях я не люблю RCS так же, как SCCS, но у него есть некоторые хорошие моменты. С коммерческой точки зрения, мой работодатель использовали SCCS до середины 1995 года, но они начали переключаться на Atria ClearCase с начала 1994 года, решая отдельные наборы продуктов по одному.

ранний эксперимент ClearCase с триггерами-и слияние ад

наш проект перекочевал позже, когда уже был некоторый опыт работы с CC. Отчасти потому, что я настоял на этом, мы встроили информацию о контроле версий в исходные файлы через триггер регистрации. Это продолжалось некоторое время, но только некоторое время - потому что, как говорится, VonC, это ведет к слиянию ада. Проблема в том, что если версия с тегом /main/branch1/N объединена с /main/M из общей базовой версии /main/B, то извлеченные версии файлов содержат одну строку, которая имеет правки в каждой версии - конфликт. И что конфликт должен быть разрешен вручную, а не автоматически.

теперь у SCCS есть ключевые слова ID. Ключевые слова ID принимают два формата: один для редактируемых файлов и один для файлов, которые не редактируются отредактировано:

Edit         Non-Edit
%I%          9.13
%E%          06/03/09
%Z%          @(#)
%M%          s.stderr.c

Если Вы предприняли попытку 3-полосная слияние редактируемой версии кластеры с единым хранилищем файлов (с %х% нотации), то не было бы никаких конфликтов на линиях, содержащих метаданные, если вы изменили метаданные на эти линии (например, путем изменения из США на %D% даты для Великобритании стиле %Е% времени - СККС не поддерживает ISO-стиле 2009-03-15 дат как стандарт.)

RCS также имеет механизм ключевых слов, и ключевые слова также принимают два формата, хотя один для файлов, которые имеют еще не был вставлен в RCS, а другой - для тех, у кого есть:

Original       After insertion
$Revision$     $Revision: 9.13 $
$Date$         $Date: 2009/03/06 06:52:26 $
$RCSfile$      $RCSfile: stderr.c,v $

разница между " $ "после ключевого слова и":", Пробел, текст, пробел и, наконец,"$". Я не сделал достаточно слияния с RCS, чтобы быть уверенным, что он делает с информацией о ключевых словах, но я отмечаю, что если бы он рассматривал как расширенные, так и "контрактные" обозначения как эквивалентные (независимо от содержания расширенного материала), то слияние могло бы происходить без конфликта, оставляя сокращенная нотация в выходных данных слияния, которая будет соответствующим образом расширена при получении результирующего файла после проверки.

проблема ClearCase заключается в отсутствии соответствующего менеджера слияния

проблема с CC (с этой точки зрения-ясно, что разработчики CC не согласны) заключается в том, что ему не хватает системы для обработки ключевых слов, и поэтому также не хватает соответствующего менеджера слияния.

Если бы существовала система для обработки ключевых слов и соответствующий менеджер слияния, то:

  • система автоматически вставит метаданные в файлы с соответствующими маркерами.
  • при слиянии система распознает, что строки с маркерами метаданных не конфликтуют, если маркеры не изменились по-другому - it будет игнорировать содержание метаданных.

недостатком этого является то, что он требует либо специального инструмента разности, который распознает маркеры метаданных и обрабатывает их специально, либо требует, чтобы файлы, подаваемые в инструмент разности, были канонизированы (маркеры метаданных сводятся к нейтральной форме - $Keyword$ или %K% в терминах RCS и SCCS). Я уверен, что эта небольшая дополнительная работа является причиной того, что она не поддерживается, то, что я всегда чувствовал, было недальновидным такая мощная система. У меня нет особого приложения к нотациям RCS или SCCS - нотации SCCS легче обрабатывать в некоторых отношениях, но они по существу эквивалентны - и любая эквивалентная нотация может быть использована.

почему я все еще думаю, что метаданные в файле хорошо

Я хотел бы иметь метаданные в исходном коде, потому что мой исходный код (в отличие от исходного кода моего работодателя) распространяется за пределы Иджис управления исходным кодом система. То есть, это в основном открытый исходный код - я делаю его доступным для всех и каждого. Если кто-то сообщает о проблеме в файле, особенно в файле, который они изменили, я думаю, что полезно знать, откуда они начали, и это представлено исходными метаданными в исходном файле.

здесь SCCS имеет преимущество перед RCS: расширенные формы ключевых слов SCCS неотличимы от обычного текста, тогда как ключевые слова RCS продолжают выглядеть как ключевые слова, поэтому если другие человек импортировал материал в свой собственный репозиторий RCS, их метаданные заменяют мои метаданные, проблема, которая не происходит с SCCS таким же образом (другой человек должен выполнять работу по перезаписи метаданных).

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

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

Итак, это умеренное резюме того, почему мне нравится вставлять информацию о версии в исходные файлы. Это в значительной степени историческое - SCCS и RCS оба сделали это, и мне понравилось то, что они сделали. Это может быть древняя реликвия, что-то, что будет прощаться в эпоху DVCS. Но я еще не полностью убежден в этом. Однако может потребоваться еще больше эссе, чтобы объяснить все входы и выходы моего механизма управления релизами, чтобы понять, почему я делаю все так, как я делаю.

одним из аспектов рассуждений является то, что ключевые файлы, такие как 'stderr.c ' и ' stderr.h', используются практически всеми моими программами. Когда я выпускаю программу, которая его использует, я просто гарантирую, что у меня есть самая последняя версия - если только не было изменения интерфейса, которое требует обратной версии. У меня не было этой проблемы в течение некоторого времени (я сделал систематический переименование в 2003 году; это вызвало некоторые переходные головные боли, но скрипты Perl позволили мне реализовать переименование довольно легко). Я не знаю, сколько программ используют, что код - где-то между 100 и 200 будет скорее всего. В этом году набор изменений (версия 9.X series) все еще несколько спекулятивны; я еще не решил, следует ли их сохранить. Они также являются внутренними для реализации и не влияют на внешний интерфейс, поэтому мне пока не нужно принимать решение. Я не уверен, как справиться с этим, используя git. Я не хочу создавать код библиотеки в библиотеке, которая должна быть установлена, прежде чем вы сможете создать мое программное обеспечение - это слишком обременительно для моих клиентов. Таким образом, каждая программа будет продолжать распространяться с копией кода библиотеки (другой вид обременительный), но только код библиотеки, который нужен программе, а не вся библиотека. И я выбираю для каждой программы, какие библиотечные функции используются. Итак, я бы не экспортировал целое поддерево; действительно, фиксация, которая охватывала последние изменения в коде библиотеки, обычно совершенно не связана с фиксацией, которая охватывала последние изменения в программе. Я даже не уверен, должен ли git использовать один репозиторий для библиотеки, а другой для программ, которые его используют, или общий более крупный репозиторий. И я не буду мигрировать в git, пока не пойму это.

ОК -- хватит болтать. То, что у меня есть, работает на меня; это не обязательно для всех. Это не делает экстраординарные требования к VCS-но для этого требуются метаданные версии, встроенные в файлы, а CC и Git и (я думаю) SVN имеют проблемы с этим. Вероятно, это означает, что у меня проблемы - зависания из-за потерянного прошлого. Но я ценю то, что может предложить прошлое. (Я могу уйти с этим, потому что большая часть моего кода не разветвлена. Я не уверен, насколько сильно изменится ветвление.)

управление исходным кодом Эрика HOWTO это отличное руководство, которое не зависит от инструмента.

Я работал с clearcase в течение большей части 6 лет и в целом нашел его терпимым. У него есть определенная кривая обучения, но как только вы привыкнете к особенностям можно плавно работать с ним. Очень компетентный администратор CC, который знает, что он делает, необходим для чего угодно, но не для тривиальных настроек. Если у вас его нет, люди столкнутся с проблемами, и достаточно скоро будут говорить о проблеме "ClearCase". Тогда руководству придется вмешаться, переключившись на что-то еще вызывает только пустую трату времени для всех участников. CC-неплохой продукт, просто иногда его плохо понимают.

вот несколько понятий, которые я нашел важными, некоторые из них не полностью ориентированы только на CC -

  • выезд не похож на обычное CVS-подобное понятие выезда. Когда вы выходите, вы блокируете файл, пока не зарегистрируете его.
  • нет проблем с перемещением файлов. на самом деле это работает безупречно.
  • деревья версий необходимы для понимания того, что происходит с файлом. Они могут стать довольно грязными для активных файлов, но когда вы привыкнете смотреть на них, это станет очень полезным инструментом и тем, что очень не хватает в других инструментах управления версиями, таких как SVN (в некоторой степени).
  • ни при каких обстоятельствах не используйте динамические представления. оно того не стоит.
  • прежде чем создавать новую ветку, поток или проект, посоветуйте своему администратору убедиться, что то, что вы создаете, действительно будет служить вам лучше всего. При запуске новой базы кода убедитесь, что вы получаете макет потоков и проектов с самого начала, планируя заранее. изменение его позже-настоящая головная боль, если это вообще возможно.
  • точная настройка привилегий пользователей и настройка триггеров для общих событий для предотвращения общих ошибок или применения политик. Сервер очень настраивается, и большинство проблем, с которыми вы сталкиваетесь, вероятно, разумное решение.
  • воспитывать разработчики на что угодно, от базовых концепций до передовых операций. Опытный пользователь, который может найти, в чем проблема, используя cleartool, снижает нагрузку на администратора.
  • Не оставляйте висячие потоки и виды. Когда разработчик покидает проект, кто-то должен удалить все представления, которые у него были на его машине, и удалить все его личные потоки. Не сохраняя ваш сервер в чистоте приведет... это грязно и со временем, медленно. Когда вы делаете "найти все проверки" на всех потоках и просмотров вас не следует видеть файлы, извлеченные людьми, которые больше не существуют.
  • назначьте политику " всегда перебазировать перед доставкой "для дочерних ветвей, чтобы избежать людей," нарушающих поток интеграции " при доставке кода, который конфликтует с недавними изменениями.
  • непрерывная интеграция - не позволяйте потоку интеграции застаиваться, пока каждый разработчик или команда работают над своей собственной веткой. Мандат один раз каждый раз, когда каждый должен по крайней мере перебазироваться на самый последний базовый уровень интеграции, если не обеспечить их стабильные изменения. Это действительно очень трудно сделать, особенно с крупными проектами, но другой альтернативой является "интеграционный ад", где в конце месяца никто ничего не делает в течение 3 дней, а какой-то бедный дерн пытается сделать все изменения совместимыми

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

Как только вы поймете, как это делается (и Clearcase делает это очень хорошо, до такой степени, что мы делаем даже небольшие изменения в виде ветви и повторного слияния, а не то, что я когда-либо делал с RCS или CVS), вы обнаружите, что ваша жизнь стала намного проще.

Как-то не по теме, но - я не знаю почти ни одного разработчика, который доволен ClearCase. Мне сказали, что он должен иметь сложные функции, но как пользователь svn и git я не могу думать о чем-то, что я пропустил в git или subversion. Так что это то, что нужно знать о ClearCase-большинство разработчиков действительно рады работать с чем-то простым, как subversion или git (да, даже git легче понять), и даже после того, как я знал, как выполнять самые простые задачи в ClearCase, у меня был постоянное ощущение, что ClearCase работает против меня, а не со мной.

Я работал над рядом средних и крупных проектов, успешно используя как Clearcase, так и SVN. Оба являются отличными инструментами, но команда, использующая их, нуждается в документированных процессах. Создайте процесс, описывающий, как будет использоваться система управления версиями.

1) Найдите или создайте документ с рекомендациями для вашей системы управления версиями. Вот один для подрывной деятельности, приспособьте его к вашему процессу Clearcase. Все разработчики должны придерживаться одного и того же плана игры.

в основном решите, собираетесь ли вы "всегда ветвиться" или "никогда не ветвиться".

Никогда Не Ветвится Схема:

  • схема never branch-это то, что SourceSafe использует, когда файлы блокируются во время проверки и становятся доступными во время регистрации. Эта схема подходит и для небольших (1 или 2 разработчиков) командных проектов.

Всегда Схема Филиала:

  • схема всегда ветвления означает, что разработчики создают ветви для каждого исправление или добавление функции. Эта схема необходима для более крупных проектов, проектов, которые имеют свинец (buildmeister), который управляет тем, какие изменения разрешены в /main/LATEST в Clearcase или /trunk в SVN.
  • схема всегда ветвления означает, что вы можете часто проверять без страха сломать сборку. Ваша единственная возможность сломать сборку-это только после завершения исправления или функции, и вы объединяете ее с /main / LATEST.

"ветвь при необходимости" является компромиссом и может работа лучше всего подходит для многих проектов.

2) с Clearcase (и Subversion) вы должны научиться сливаться-слияние-это ваш друг. Научитесь использовать возможности слияния Clearcase или использовать такой инструмент, как Вне Конкуренции или emacs-diff. Если ваш проект хорошо модулирован (много небольших разобщенных файлов), вы выиграете от меньшего количества (или нет) конфликтов во время слияния.

3) наслаждаемся.

Если вы используете ClearCase, убедитесь, что вы используете UCM, который поставляется с ним и составными компонентами.

Это делает все ваши ветвления/слияния усилий. Я говорю о крупных филиалах re-org, которые работают в течение 6 месяцев, включая десятки тысяч изменений, включая переименование каталогов, переименование файлов и т. д., которые автоматически разрешают 99,9% дельт.

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

единственная проблема, которую я имею о UCM, заключается в том, что история не может охватывать компоненты. При разделении компонента на несколько новых компонентов каждый новый компонент начинается с /main/0.

Как вы реализуете инструменты контроля версий в своем проекте, зависит от размера и объема вашего проекта и более раннего опыта команды. ClearCase является фантастическим инструментом для больших проектов всфере разработчиков и размера проекта. Управление филиалом является одной из очень важных перспектив при использовании инструмента управления версиями. без ветвления и слияния это cake walk во время жизненного цикла вашего проекта. Но вы не можете остаться в стороне от слияния почему, потому что это позволяет вам блокировать и фантастический параллельное развитие.

есть очень удобная команда cleardescribe это полезно много раз. Может использоваться для получения сведений о ярлыках и ветвях. Синтаксис:

cleardescribe lbtype:<LABELNAME>@\<VOB-NAME>
cleardescribe brtype:<BRANCHNAME>@\<VOB-NAME>

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