Наша команда стремится перенести наш сервер perforce на Git. Есть ли способ синхронизировать проверки из ветки на нашем сервере Github обратно в Perforce, чтобы синхронизировать их? Я смотрю на git-p4, и, похоже, есть много документации о том, как синхронизировать Perforce -> Git, но не наоборот. Я бы идеально хотел, чтобы он синхронизировал оба пути: < -> git, возможно ли это с p4-git?Ищет способ синхронизации Perforce <-> Git
ответ
Git-p4 разработан таким образом, что репозиторий git инициализируется данными, импортированными из Perforce. После этого первоначальный импорт двунаправленной связи между репозиториями git и Perforce полностью поддерживается, за исключением филиалов/объединений, которые имеют ограниченную поддержку.
Чтобы импортировать обновления из неволи мерзавца:
git p4 sync
Чтобы отправить изменения от мерзавца до Perforce:
git p4 submit
Для получения более подробной информации о конфигурации ГИТА-p4 обратитесь к его documentation.
Обновление: Я бы всегда советовал протестировать любые потоки во временных хранилищах перед развертыванием.
Perforce GitFusion может это сделать, но разработчику придется вводить изменения в сервер GitFusion вместо сервера github.
В прошлом я настраивал что-то вроде этого. У меня было gitolite repo и p4-сервер. Изменения, перенесенные в репозиторий gitolite, будут подхватываться заданием cron и превращаться в P4-коммиты (через git-p4 submit). Аналогично, изменения, представленные в p4, будут подхвачены одним и тем же заданием cron и синхронизированы с git (через git p4 rebase).
Были задействованы два репозитория git: репозиторий gitolite, на который были направлены обычные разработчики git, и отдельное репо на git-p4, где выполнялись операции git-p4.
У меня был довольно небольшой сценарий оболочки, чтобы координировать все. Основные хитрые области были:
замка: вы должны принудительно перебазироваться в gitolite репо, так что вам нужно каким-то образом, чтобы обеспечить разработчик не потерять изменения, когда это происходит (я использовал файл блокировки).
Объединить конфликты. Очень часто два человека редактировали один и тот же раздел файла в P4 и git одновременно.
Я столкнулся с этой проблемой сам, и насколько я знаю, в этом нет ничего подобного.
В моем случае я должен в принципе:
- Создать патч для изменения в Git:
git diff sha1..sha2 > mypatch.diff
- Составьте список обнаруженных файлов:
git diff --name-only sha1..sha2 > files.list
- Применить патч в P4 репо :
git apply mypatch.diff
- Reconcile изменения в P4:
for each file in files.list; p4 reconcile $file; done
- Редактируйте список изменений P4, а затем отправить его (я уверен, что это са n быть автоматизированным, но у меня не было необходимости в нем).
У меня есть несколько сценариев, которые помогают мне с этим, вы можете найти их здесь: https://github.com/pgpbpadilla/git-p4-helpers#sharing-changes-git-p4
Я использую этот рабочий процесс для ~ 6MO и он работает в большинстве случаев.
Предостережения
- Это создает единый список изменений для всех фиксаций в диапазоне ша (
a..b
).
- 1. ищет лучший способ синхронизации баз данных
- 2. Ищет регулярное выражение, соответствующее всем операторам: + - */=>< > = <= & | %! ^()
- 3. Перевод Git -> Perforce не работает
- 4. Perforce (Р4) maxresults Ошибка синхронизации
- 5. IProgress <T> синхронизации
- 6. Не удалось «rbt post <CHANGENUM>» от Perforce P4V
- 7. Синхронизация между perforce и git
- 8. Regex ищет символы типа «/», «<" and ">»
- 9. Ищет генератор Python <--> Связывание XML
- 10. Показаны списки изменений Perforce с последней синхронизации
- 11. Perforce для пользователей Git?
- 12. Миграция с git на Perforce
- 13. Лучший способ синхронизации Heroku с git repo?
- 14. Способ использования git для синхронизации частных репозиториев
- 15. Ищет alterantive к списку <KeyValuePair <строка, KeyValuePair <строка, строка >>>
- 16. Git вишневый эквивалент в Perforce?
- 17. локальной синхронизации и сила импорта Perforce
- 18. Лучший способ заменить <a><li></li></a>?
- 19. Разница между `git branch -f <branch_name><hash>` и `git checkout <branch_name>; git reset --hard <hash> `под чистым рабочим деревом?
- 20. Команда Git: какая разница между git checkout -b <branch><удаленная ветка> и ветка git <branch><удаленная ветка>?
- 21. Как синхронизировать Perforce с Git, сохраняя существующие хэты Git?
- 22. Структура/алгоритм синхронизации данных для сервера <-> устройство?
- 23. Отменить "git add <dir>"?
- 24. Почему perforce показывает «// depot <содержит файлы или папки>»?
- 25. Отмена git checkout - <file>
- 26. git grep <regex, содержащий newline>
- 27. Существуют ли какие-либо автоматизированные службы синхронизации SVN-> GIT?
- 28. В чем разница между git checkout <remote>/<branch> vs git checkout <branch>?
- 29. git checkout vs git checkout HEAD vs git checkout <CURRENT BRANCH> vs git checkout - <WORKING DIR>
- 30. git reset <file> по сравнению с git reset - <file>
ОК, так что я действительно ищу, чтобы синхронизировать ветви между внешней веткой, расположенной на сервере предприятия github, и внешней веткой на нашем сервере perforce. Мне нужно, чтобы внешние разработчики проверяли внешний репозиторий github. Я предполагаю, что git-p4 допускает только внешние внешние и локальные реплики git? – bobster
Это было бы возможно, если репозиторий github все еще не был инициализирован, потому что SHA Commits не будет соответствовать другому. – Vitor