объединить поддерево слияния с редкой проверкой в ​​git - PullRequest
4 голосов
/ 14 марта 2012

Я пытаюсь подражать svn: externals в git.В проекте «A» мне нужно развернуть библиотеку «B» в подпапку «A».И A, и B - отдельные репозитории git.Я знаю, что могу сделать это либо с подмодулями, либо слиянием поддеревьев.Однако, чтобы еще больше усложнить ситуацию, мне нужно вытащить подпапку «B» в «A», а не весь проект, потому что это модуль Python, который мне нужно импортировать напрямую, и у меня не может быть структуры корневого каталога там.или его нельзя импортировать.

Это довольно легко сделать с помощью svn: externals.С git это кажется сложным или даже невозможным.

Вот пример:

Проект B:

-B
  - src
    __init__.py
 - test
   ...

Проект A:

- A
   - src
     A.py (imports B)
     - B (partial check of sub folder 'src' as name 'B')
        __init__.py
   - test
     ...

Ответы [ 3 ]

0 голосов
/ 15 марта 2012

Вместо того, чтобы решать эту проблему, настраивая git, почему бы просто не установить B где-нибудь и сказать A, где найти подмодуль для включения?Если вы просто добавите в sys.path папку, содержащую соответствующий подмодуль B, вы можете вернуться домой.

0 голосов
/ 15 марта 2012

Git в основном все или ничего. Лучше всего клонировать модуль в другом месте и либо поставить символическую ссылку на нужный каталог, либо использовать sys.path.

- A
   - src
      - B symlink to ../../B/
- B

Если вас беспокоит размер клона подмодуля, и вам не нужно фиксировать его, тогда вы можете использовать --depth=1 при клонировании, чтобы игнорировать историю.

К сожалению, вы не можете клонировать подпапку. В лучшем случае вы можете использовать git-filter-branch, чтобы удалить все из репо, кроме выбранной подпапки.

0 голосов
/ 14 марта 2012

B (библиотека) также должен быть супермодулем, который включает подмодуль "модуль python"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...