Git и tfs: могу ли я, чтобы только центральное репо взаимодействовало с tfs?

Я хотел бы перевести свою команду с использования TFS для контроля версий на git.

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

  1. Создайте центральный репозиторий git, используя git-tfs
  2. Попросите каждого разработчика клонировать центральный репозиторий, извлекать из него и отправлять в него
  3. А потом обновлять tfs только из центрального репо?

Спасибо!


person tpdi    schedule 13.01.2012    source источник


Ответы (3)


Создайте центральный репозиторий git, используя git-tfs

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

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

person VonC    schedule 13.01.2012
comment
Да конечно. Но я действительно имел в виду стратегию наличия только центрального репозитория git-tfs для tfs. - person tpdi; 14.01.2012
comment
Теперь, когда git-tfs управляет ветками, это не должно быть огромной проблемой... И даже если клон может быть очень длинным, он делается только один раз! - person Philippe; 13.12.2012
comment
@ Филипп, правда, и я проголосовал за ваш очень полный ответ. Моя точка зрения более общая: когда вы используете DVCS, лучше всего адаптировать степень детализации репо к его использованию (вы должны клонировать его) и использовать это как возможность изолировать различные компоненты, представляющие архитектуру ваше приложение. В отличие от сохранения одной гигантской монолитной исходной базы. - person VonC; 13.12.2012

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

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

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

Затем у вас есть 2 варианта: а) вы соглашаетесь иметь только одну фиксацию в TFS, даже если у вас есть несколько коммитов git (используйте команду git-tfs 'checkin') б) вы хотите реплицировать каждый коммит git в TFS (используйте коммит git-tfs 'rcheckin')

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

Второй случай b) для меня является единственным приемлемым, но его гораздо сложнее решить, потому что при синхронизации репозитория git с помощью команды git-tfs 'rcheckin' для каждого коммита git создается новый, и скрипт синхронизации будет будет намного сложнее написать (я даже не знаю, можно ли разрешить все конфликты слияния). Я начал писать этот скрипт, но остановился, потому что это не стоит усилий (особенно теперь, когда 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), который, кажется, работает.

person Philippe    schedule 13.12.2012

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

person jessehouwing    schedule 14.02.2014