Как частично экспортировать репозиторий git? - PullRequest
3 голосов
/ 12 февраля 2009

Моя компания использует git для внутреннего использования, и некоторые наши работы мы публикуем как открытый исходный код в Google Code, который использует svn. (Если бы он поддерживал git, проблема, вероятно, была бы такой же.)

Проблема в том, что мы публикуем только часть нашего репозитория, поэтому использование git-svn, как описано в http://code.google.com/p/support/wiki/ImportingFromGit, не будет работать.

  • Как опубликовать часть репозитория? (Впервые я просто скопировал файлы, которые мы хотим опубликовать.)
  • Как синхронизировать изменения между опубликованными файлами и хранилищем кода?

Ответы [ 3 ]

4 голосов
/ 12 февраля 2009

Вы можете использовать git-filter-branch для извлечения частей, которые вы хотите импортировать в Google Code.

2 голосов
/ 30 ноября 2012

В git 1.7.11 мы используем такую ​​команду, чтобы экспортировать только необработанные файлы из одного каталога в хранилище, без экспорта элемента управления и истории git. Обязательно запустите его в существующем каталоге , в котором вы хотите, чтобы файлы появлялись (т.е. сначала создайте и перейдите в каталог назначения):

git archive --remote /local/master/project.git HEAD:open/src | tar x
  • Замените / local / master / project.git на все, что вы используете для указания своего хранилища (в моем примере используется локальный мастер NFS)
  • заменить заголовок именем филиала
  • заменить open / src на каталог в репозитории для экспорта

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

Вы можете также использовать параметры tar, чтобы исключить некоторые файлы из выбранного дерева каталогов.

2 голосов
/ 12 февраля 2009

Один из подходов может состоять в том, чтобы создать отдельный репозиторий Git для общедоступных материалов и включить его в качестве подмодуля во внутренний репозиторий. Тогда будет намного проще синхронизировать общедоступный репозиторий Git с репозиторием Google Code SVN.

...