Используя git для синхронизации существующей коллекции файлов? - PullRequest
0 голосов
/ 06 января 2011

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

На некоторых других машинах у меня есть в основном современные копии существующего репозитория SVNфайлы.

  • Можно ли синхронизировать данные с новым git-репо, но использовать эти существующие файлы, чтобы мне не пришлось повторно передавать все данные?

  • Достаточно ли умен git, если я сделаю выборку?или оформить заказ?что он заметит, что файлы идентичны, и не передаст их повторно?

Ответы [ 2 ]

1 голос
/ 06 января 2011

Git работает не с файлами, а со снимками.И протокол, который использует git, чтобы решить, что нужно скачать, работает с целыми коммитами сразу.Если вы инициализируете два репозитория с немного отличающимися файлами (или даже с идентичными файлами, но у них нет общих коммитов), тогда вам нужно будет загрузить все объекты при извлечении, даже если будет много дублированных деревьев и BLOB-объектовочистится позже.

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

du -sh .git
git remote add origin ../other
git fetch
du -sh .git
git prune
du -sh .git

The *Шаг 1006 * скопирует все данные, а шаг prune удалит все дублированные объекты.

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

Однако, если у вас есть доступ к одному и тому же снимку SVN на нескольких серверах, выможет создавать идентичные коммиты, если вы фиксируете деревья, которые на 100% идентичны, и используете одну и ту же информацию для GIT_AUTHOR_NAME, GIT_AUTHOR_DATE и т. д.

0 голосов
/ 06 января 2011

Может быть git-svn это то, что вы ищете?

Он допускает двунаправленную работу между хранилищем Subversion и хранилищем Git.

Я никогда не использовал его, но я знаю разработчиков, которые его используют. Он позволяет им извлекать файлы из Subversion, использовать Git в качестве собственной частной системы контроля версий, где они могут сохранять изменения без необходимости отправлять их в Subversion. Затем, как только они закончили, они возвращают свои изменения обратно в Subversion.

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