2013-03-13 2 views
4

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

То, что я хочу, что, кажется, хватает:

  • Следите за то, что было добавлено через поддерева, и что филиал был определен
  • Способность делать git subtree pull-all и push-all
  • As часть последнего, возможность указать, должно ли поддерево быть заблокировано для конкретной фиксации или последней фиксации в ветке.

Эти вещи встроены в команду, и я просто что-то пропустил в том, как они используются? У меня также есть требование, чтобы это работало на Windows, в случае, если это затрагивает что-либо.

Спасибо,

+0

В нашей сборной версии git версии 1.8.1.5 отсутствует команда 'git subtry'. Возможно, это дополнение или что-то из бит 'contrib', или, возможно, у вас есть кандидат на выпуск (1.8.2-rc ) ... – twalberg

+0

' git -version' отображает 'git версию 1.8.1. msysgit.1'. Вчера я обновился от 1,7, используя официальные двоичные файлы Windows. Первоначально я смотрел на него из репозитория github, но в настоящее время он имеет этот документ: https://github.com/apenwarr/git-subtree/blob/master/THIS-REPO-IS-OBSOLETE, комментируя его включение в git собственно. –

+2

Нет, он никогда не был интегрирован в git - это часть папки git 'contrib' - это не значит, что она автоматически устанавливается. См. Здесь: https://github.com/git/git/tree/master/contrib/subtree – Chronial

ответ

0

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

+0

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

+1

Кроме того, я видел такие вещи, как http://endot.org/2012/02/12/git-subtree-tracking-made-easy/, которые начинают строить в направлении рабочего процесса, который я искал, используя поддеревья.Я надеялся, что кто-то взял его дальше и с версией, которая была проверена в Git/contrib, а не как отдельная вилка. –

+0

Состояние отсоединенной головки действительно немного опасно. Но вы должны проверить, в какой ветке вы работаете, когда работаете над своим кодом и перед тем, как совершать какие-либо действия. – Chronial

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