Как я могу синхронизировать файлы в двух разных git-репозиториях (не клонах) и вести историю? - PullRequest
10 голосов
/ 07 декабря 2009

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

Я был одним из сопровождающих perlfaq (Github) , и недавно я стал работать с основной документацией по Perl, которая также есть в git.

Задолго до того, как я начал обслуживать perlfaq, он жил в отдельном репозитории контроля версий. Я недавно преобразовал это в мерзавец. Периодически один из переносчиков perl5 синхронизирует общие файлы в репозитории perlfaq и репозитории perl. С тех пор как мы перешли на git, мы немного ленивые конвертировали инструменты, и теперь я тот, кто это делает. В настоящее время два репо останутся отдельными.

В настоящее время, чтобы синхронизировать FAQ для нового (ежемесячного) выпуска perl, мне почти стыдно сказать, что я просто копирую perlfaq * .pod файлы в репозитории perlfaq и накладываю их в репозиторий Perl Это теряет историю и т. Д. Кроме того, иногда кто-то вносит изменения в эти файлы в репозитории Perl, и я перезаписываю их (да, проверьте git diff, идиот!). Файлы не имеют одинаковых путей в репозитории, но я думаю, что это можно изменить.

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

  • Создание патчей работает, но это также много работы для управления
  • Подмодули Git, кажется, работают только для извлечения всего внешнего репо
  • Я не нашел ничего похожего на внешние файлы svn, но в любом случае это работало бы в обоих направлениях
  • Я бы хотел просто взять предметы из одного, а вишню - из другого

Какой хороший способ справиться с этим?

Ответы [ 2 ]

1 голос
/ 07 декабря 2009

Здесь может помочь стратегия слияния поддерева в сочетании со сценарием поддерево git .
Это будет работать для push и pull.
У него все еще есть некоторая проблема с слияниями , хотя Git1.7.0 исправит это с помощью опции '-Xsubtree', но это все же стоит изучить.

0 голосов
/ 28 июля 2010

Я предполагаю, что вы хотите историю perlfaq в репозитории perl. Я бы сделал это (в репозитории Perl)

git remote add perlfaq git://perlfaq... # real uri
git checkout perlfaq/master -b perlfaq
git checkout master # or whatever
git merge perlfaq

вопреки распространенному мнению, git не должен иметь общую историю для выполнения слияния. Я знаю, что таким образом объединял 3+ репо в regen2. Это может быть больно в первый раз. Но после этого это не должно быть слишком болезненным. К сожалению, вы можете объединить только в одну сторону, но вы можете, вероятно, выбрать фрагменты из репозитория Perl в perlfaq, если хотите.

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