2011-01-18 3 views
5

Я пытаюсь перевести мой репозиторий cvs в git и застрял в этой последней проблеме некоторое время.CVS ampersand modules эквивалент в git

В настоящее время я использую модули CVS ampersand для совместного использования кода между проектами. Это позволяет вам в основном «псевдоним» другого репозитория в качестве подкаталога в вашем проекте, поэтому вы можете обновлять/фиксировать весь проект и включать удаленные репозитории, как если бы это был один репозиторий.

Я видел темы, которые рекомендуют поддерево слияния или подмодули для этого, ссылаясь на (svn: externals). Это не сработает, потому что:

  • сглаживание поддерева, по-видимому, не позволяет вам легко возвращать/обновлять внешние репозитории.

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

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

+2

Подмодули на пути к тому, чтобы стать немного ближе к тому, что вы хотите - 'git fetch' теперь является подмодулем, и я уверен, что больше придет. Однако фиксация в подмодулях немного дальше их намеченной цели. – Cascabel

+1

Кажется, вы правы, подмодули - это то, что я ищу, но они еще не совсем там. Я удивлен, хотя, как я чувствовал, что этот рабочий процесс довольно распространен, и git существует уже некоторое время. – paulsc

+1

@paulsc: Я думаю, что что-то немного другое более распространено: работать над подпроектом независимо от суперпроекта, а затем обновлять суперпроект до более новой версии подпроекта. – Cascabel

ответ

1

Это очень не-git. Если они представляют собой отдельные проекты, они принадлежат к отдельным хранилищам.

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

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

+0

Кажется, что наш рабочий процесс не был таким необычным, поэтому я смущен тем, как другие люди справляются с этим. Это отдельные проекты, но они содержат значительный объем кода. Таким образом, каждый проект подразделяется на «компоненты», которые в идеале должны отображаться в один репозиторий git для каждого компонента. Необходимость совершать вещи атомарно (т. Е. Несколько компонентов/git repos сразу) связана с нежеланием пропустить какие-либо изменения в любом из разных компонентов. – paulsc

+0

Также репо кажется интересным - довольно специфичным для андроида прямо сейчас. Кажется, что способ выполнить этот рабочий процесс теперь просто для того, чтобы просто свернуть свой собственный поверх git. – paulsc

+0

Это не относится к Android. Сейчас я использую его в другом проекте. Проекты отделены друг от друга, и сам контейнер может связывать связанные версии в разных отраслях. Если вы этого не сделаете, у вас возникнут проблемы, когда два проекта вносят конфликтующие изменения в общий проект. – Dustin

0

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

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