Связывание папки из одного Git Repo с другим для тестирования БД - PullRequest
1 голос
/ 18 октября 2019

У меня есть два проекта [git repos], которые совместно используют схему базы данных, но только один из проектов на самом деле содержит файлы DDL SQL. Я знаю, что мог бы добавить тот, который содержит SQL как поддерево, но это заняло бы весь код и все - все, что мне нужно, это каталог с файлами SQL, так что я могу создать схему во втором проекте для тестирования с использованием H2,Я бы предпочел не пытаться синхронизировать их вручную [никогда не работает] - поэтому я надеялся просто связать папку /sql в проекте 1 с проектом 2.

Я также не могу создавать какие-либо новые репозитории вGit.

Ответы [ 2 ]

1 голос
/ 22 октября 2019

1. Подмодуль

Используя подмодули Git , вы можете связать весь репозиторий только внутри другого. Таким образом, одним из способов было бы разделить весь каталог /sql на отдельный репозиторий и связать его как подмодуль с обоими репозиториями.

В этом случае изменения в файлах связанного репозитория будут отправлены на источникхранилище.

2. Поддерево

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

Проверьте, например, эту страницу :

# Clone the target repo
git clone git@github.com:jclouds/jclouds.git
cd jclouds

# Add the source repository as a remote, and perform the initial fetch.
git remote add -f sourcerepo git@github.com:jclouds/jclouds-labs-openstack.git

# Create a branch based on the source repositories' branch that contains the state you want to copy.
git checkout -b staging-branch sourcerepo/master

# Here's where the two approaches diverge.
# Create a synthetic branch using the commits in `/openstack-glance/` from `sourcerepo`
git subtree split -P openstack-glance -b openstack-glance

# Checkout `master` and add the new `openstack-glance` branch into `/apis/openstack-glance/`. At this point, the desired result will have been achieved.
git checkout master
git subtree add -P apis/openstack-glance openstack-glance

# Clean up by removing the commits from the `openstack-glance` branch and the `sourcerepo` remote.
git branch -D openstack-glance staging-branch
git remote rm sourcerepo

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

0 голосов
/ 22 октября 2019

В Git нет встроенной функции, которая делает то, что вы хотите. Два "трюка", которые приходят мне в голову:

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

  2. Вы можете объединить подход подмодуляс разреженной проверкой только для проверки файлов SQL. Тем не менее, он по-прежнему извлекает всю историю подмодуля, просто никакие другие файлы, кроме файлов SQL, не будут извлечены в вашем рабочем дереве.

...