2012-01-13 2 views
4

Я хотел бы переместить мою команду с помощью TFS для контроля версий, git.Git и tfs: могу ли я общаться только с центральным репо с tfs?

Есть ли причина, почему я не должен делать следующее:

  1. Создать центральный репозиторий с помощью Git-ЕГО
  2. У каждого клона разработчика центрального репозитория, вытащить из, и нажать на него
  3. А потом обновлять только tfs из центрального репо?

Спасибо!

ответ

3

Создать центральный репозиторий с помощью Git-ТПО

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

Я рекомендовал бы сделать несколько git-tfs для того, чтобы создать несколько меньше Git репо.

+0

Хорошо, конечно. Но я действительно имел в виду стратегию иметь * только * центральный репо (ы) git-tfs для tfs. – tpdi

+0

Теперь, когда git-tfs управляет ветвями, это не должно быть большой проблемой ... И даже если клон может быть очень длинным, это делается только один раз! – Philippe

+0

@Philippe true, и я поддержал ваш очень полный ответ. Моя точка зрения более общая: когда вы используете DVCS, лучше всего адаптировать детализацию репо к его использованию (вы должны клонировать его) и использовать это как возможность изолировать различные компоненты, представляющие архитектуру ваше приложение. В отличие от одной гигантской монолитной исходной базы. – VonC

1

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

Я полагаю, что вся ваша команда будет использовать этот поток в противном случае, вы можете перестать думать о идее сделать это (из-за конфликта слияния вам придется управлять) ...

Поскольку git-tfs не работает с открытым репозиторием, вы в конечном итоге получите 2 git-репозитории, которые вы должны синхронизировать. 1-й, где вы нажимаете (голый) и второй, которые взаимодействуют с TFS (не голыми, где вы используете git-tfs).

Затем, у вас есть 2 варианта: а) вы принимаете, чтобы иметь только один совершить на TFS, даже если у вас есть несколько мерзавец совершать (использование мерзавец-ТПО «» команда приезда) б) вы хотите повторить каждый git commit в TFS (используйте git-tfs 'rcheckin' commit)

Первый случай a) не лучший, но легче решить некоторые скрипты и git-крючки, потому что всегда существует только новая git-фиксация для синхронизации между 2 репозитория.

2-й случай b) является для меня единственным приемлемым, но гораздо сложнее решить, потому что, когда вы синхронизируете git-репозиторий с помощью команды gche-tfs 'rcheckin', для каждого git-commit создается новый и сценарий синхронизации будет намного сложнее писать (я даже не знаю, можно ли разрешить весь конфликт слиянием). Я начал писать этот сценарий, но остановился, потому что это не стоит усилий (особенно теперь, когда Visual Studio 2012 разрешает проблему перезагрузки, где каждый раз, когда файлы решений перезагружались). Если вы хотите это сделать, сценарии в столбце ниже являются хорошим шагом от того, где начать ...

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

Но если вы все еще хотите иметь центральный репозиторий Git, вы можете проверить этот пост (http://sparethought.wordpress.com/2012/08/23/my-environment-for-day-to-day-work-with-git-tfs/) на гибридный способ (зафиксировать TFS и извлечь из git), который кажется сработавшим.

0

Team Foundation Server 2013 теперь поддерживает Git в качестве исходного репозитория управления для Team Project, а Visual Studio Tools для Git обеспечивает доступ Git, встроенный в Visual Studio (add-in for 2012, поставляется в комплекте с 2013 годом).