Написание расширения GIT, позволяющего файлам в разных ветвях / головках сосуществовать в одном каталоге - PullRequest
1 голос
/ 20 октября 2011

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

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

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

1) Простой способ. Оберните простой скрипт на Perl, который проверяет несколько ветвей за кулисами и сохраняет запись о том, какой файл принадлежит какой ветке, и просто копирует файлы обратно и выполняет команды git за кулисами.

2) Если возможно (я не знаю), какое-нибудь причудливое использование низкоуровневых команд git, чтобы сделать это напрямую, без каких-либо проверок. Это возможно?

3) Какой-то низкоуровневый интерфейс в git-коде.

Очевидная проблема с 2 - это растрата ресурсов со всеми скрытыми проверками и уродством всего этого, но я не знаю достаточно о 2 или 3, чтобы понять, возможны ли они разумно.

-

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

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Эта глава Git Community Book может быть интересна вам для низкоуровневого взаимодействия с Git.

Если перефразировать его,

  1. Создание BLOB-объектовиз ваших файлов с помощью git hash-object.
  2. Создайте дерево из ваших больших объектов с помощью git mktree.
  3. Создайте коммит для этого дерева с помощью git commit-tree.
  4. Обновитеветвь для указания на этот коммит с git update-ref.
0 голосов
/ 17 апреля 2012

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

...