2016-01-12 3 views
0

Раньше у нас был проект Perforce, который позволяет говорить myProject в // depot/path/myProject. Недавно мы перенесли его в GIT (myProject.git), но некоторые из них используют Perforce. Итак, если человек A изменяет файл A.txt в GIT, что было бы лучшим способом распространить эти изменения на perforce в //depot/path/myProject/A.txt?Распространение изменений с GIT на Perforce

+2

Лучшим способом было бы отключить Perforce (сделать его доступным только для чтения), чтобы это не повторилось, а затем объясните инженерам, которые все еще использовали его, чтобы их коммиты не были в дереве кода, поэтому им нужно передайте их в ваш репозиторий git. – mah

ответ

0

Вы можете использовать что-то вроде Helix GitSwarm с git fronted (на основе GitLab), который в основном представляет собой интегрированный сервер Git, который отображается на обычную ветвь/поток Perforce.

Но в остальном я не думаю, что вы можете фактически иметь 2 разных SCM в одном проекте параллельно. Очень быстро два проекта расходятся.

Скажем, в какой-то момент для файла вы же состояние A:

Perforce: 
A 

Git: 
A 

Тогда, если и развиваться параллельно вы будете иметь что-то вроде:

Perforce: 
A --> B --> D --> E 

Git: 
A --> M --> N --> P 

Допустим, вы хотите примените разные A -> E к Git, вы можете «запланировать» непосредственно основную строку, потому что вы ожидаете чего-то похожего на A.

Что вы можете сделать - это ветка от общего предка:

Perforce: 
A --> B --> D --> E 
Git: 
A --> M --> N -->P--> R 
\    /
-->B --> D --> E 

Затем вы должны решить, сливаете ли вы обратно R в Perforce или нет. Но это будет кошмар для поддержания, потому что вам придется отслеживать вручную, в этот момент вы синхронизировали 2 инструмента.

Пункт SCM состоит в том, чтобы иметь консолидированную историю для вашего проекта, если вы используете 2 сразу, вы не сможете получить согласованную историю.

Как уже упоминалось, вероятно, проще поставить устаревшую систему в режиме «только для чтения» и помочь людям перейти на новую.

0

Если вы хотите использовать Git Swarm для зеркального отображения контента и для Perforce, вам также необходимо использовать Git Fusion для достижения этого.

Если вам не нужны функции UI и Git Management Git Swarm, вы можете использовать Git Fusion самостоятельно.

Git Fusion - это мост, который будет находиться между сервером Perforce и пользователями Git.

Вы должны создать репозитории Git Fusion, которые будут отображаться в областях склада, с которыми должен работать Git.

Пользователь Git клонирует, тянет, толкает и т. Д. Через Git Fusion.

Изменения, которые они вносят в ветви, могут быть видны пользователям Perforce, и изменения команды Perforce User могут быть получены пользователем Git.

мерзавец Fusion админ руководство здесь:

https://www.perforce.com/perforce/doc.current/manuals/git-fusion/

Надеется, что это помогает, Джен.

Смежные вопросы