Как я могу использовать GIT-TFS и GIT-SVN в одном дереве исходных текстов? - PullRequest
2 голосов
/ 04 апреля 2011

У меня есть проект на работе, который я бы хотел сделать ненужно сложным проще, используя git для управления локальным источником.Мы используем TFS на работе, но я также должен отправить исходный код на SVN-сервер клиента для рабочих выпусков.TFS должен быть официальным источником записи [пока я не смогу убедительно обосновать необходимость переключения :-)], SVN - это просто вехи, и я бы хотел, чтобы git был повседневной рабочей средой.

Я использую git-svn для второй части, в основном я просто выполняю git на вехах, а затем нажимаю на svn.

Я бы хотел перейти к использованию git вместо TFS для более активной разработки, но я не уверен, как / если я могу настроить оба отображения одновременно.Все примеры, которые я вижу для git-tfs и git-svn, начинаются с клонирования репозитория, для которого требуется, чтобы репозиторий был пустым.Есть ли какие-то метаданные, которые я могу добавить вместо клонирования для настройки сопоставления TFS?

Сопоставления также немного странны (это сайт CMS, поэтому мы не храним основные файлы в системе контроля версий)., только наши настройки):

  • теги (используются только SVN)
  • ветви (из SVN, не используются)
  • транк (из SVN, по ссылке на сайт))
  • Веб-сайт
    • Настольные модули (сопоставленные в TFS)
    • Порталы (сопоставленные в TFS)
    • Провайдеры (сопоставленные в TFS)

Сможет ли git обрабатывать SVN-репозиторий, сопоставленный с корнем, и TFS-репозиторий, отображенный дальше в?

Будет ли работать удаление папок, сопоставленных в TFS, а затем клонировать ихот git-tfs?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Вы можете привить git-svn в любой репозиторий, добавив соответствующий раздел в .git/config (изучите любое рабочее git-svn репо, чтобы увидеть, как оно выглядит), а затем git-svn fetch, чтобы заполнить его. Маловероятно, что и git-svn, и git-tfs будут генерировать идентичные SHA для идентичных деревьев (например, из-за тривиальных вещей, таких как отображение имени пользователя или даты, или из-за менее тривиальных вещей, таких как метаданные git-svn, по умолчанию в сообщениях коммитов помещаются), но слияния должно быть тривиальным. Вы можете использовать svn.noMetadata, чтобы отключить дополнительную строку в каждом коммите, которая отображает ревизию SVN в коммит git. Единственным недостатком этого является то, что rev_map будет единственным источником этой информации, и если она будет удалена (или если вы клонируете вашу рабочую копию), соединение git-svn будет разорвано.

0 голосов
/ 10 августа 2011

Я думаю, что в настоящее время вы не можете.Когда вы фиксируете tfs - git-tfs эффективно переписывает ваш коммит на новый с тем же деревом и измененным комментарием (добавляет что-то вроде git-tfs-id: [http://tfs:8080/tfs]$/Project;C666 в конец оригинального комментария).

Было несколько мысли о замене комментария на git notes .Но это даже не в планах в настоящее время.

...