git-p4 - любые отличные объяснения того, как это работает

Если вы используете perforce удаленно и хотите иметь удивительную скорость git для отслеживания различий, вот решение:http://kb.perforce.com/article/1417/git-p4

однако я заметил следующее:

  1. следуйте инструкциям точно
  2. это может занять некоторое время, чтобы импортировать большое дерево без истории
  3. на большом дереве первая фиксация займет много времени, так как эта команда синхронизирует все дерево.
  4. если вы делаете фиксацию, которую вы не хотите отправлять в perforce, вы должны сделать "git rebase-i" и удалить оскорбительную запись фиксации. Вы не можете сделать "git P4 submit", а затем" P4 revert " файл, который вы не хотите отправлять.
  5. если вы что-то испортите, все может стать очень запутанным.

и это мой вопрос. есть ли хорошее объяснение того, как git-p4 использует удаленные репозитории? И общее объяснение горячего git-p4 работает?

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

4 ответов


есть еще некоторая информация в Documentation/git-p4.txt в исходном коде проекта git.

git-p4 поддерживает ветвь refs/remotes/p4 для зеркального отображения удаленного сервера Perforce. По умолчанию git-p4 clone и git-p4 sync обновить этот пульт и перебазировании ваш мастер против него.

git-p4 submit требуется настройка дополнительного локального каталога в качестве корня клиента Perforce для использования p4 submit.

git-p4 sync/clone будет записывать каждый номер списка изменений Perforce в соответствующем сообщение git commit. Например:

[git-p4: depot-paths = "//depot/test/": change = 51]

используя эти обозначения списка изменений,git-p4 sync получает списки изменений на сервере Perforce, еще не переданном git, добавляя обозначения списков изменений к каждому новому сообщению о фиксации git.

git-p4 submit начинается с идентификации новых локальных git-коммитов-тех, у кого нет [git-p4: ...]. Используя локальную рабочую область клиента Perforce, он синхронизирует файлы Perforce и с git apply применяет исправления, полученные от git format-patch на неподтвержденный git совершает перед вызовом p4 submit.

затем git-p4 submit звонки git-p4 sync чтобы обновить ветку ref/remotes/p4 против только что обновленного пульта Perforce.

наконец-то git-p4 submit будем называть git rebase на ветку master на обновленный пульт. Это приводит к тому же дереву git, которое было отправлено, но с отредактированными сообщениями фиксации, содержащими [git-p4...] список изменений обозначения.

как сохранить несколько файлов, измененных в Git даже не отправив их на П4?

git-p4 submit отправит все коммиты филиала. Используйте обычные инструменты git для организации изменений в ветке, которую вы выбираете для отправки в Perforce.


относительно " какие коммиты находятся в ожидании фиксации для perforce?"

любая команда, которая может принять ряд изменений (см. gitrevisions(7)) должен работать, вам просто нужно обратиться к удаленному P4 в качестве конечной точки для диапазона. Например:

  • git log remotes/p4/master..master
  • git diff remotes/p4/master..master

Я предпочитаю использовать show-branch чтобы получить краткий обзор состояния моих филиалов, в этом случае git show-branch --all работает так же.


Я использую git-p4 иногда, так как я часто путешествую и не всегда имею хорошее соединение с офисом. Я понимаю, хотя я не погружался в это глубоко, что git-p4 поддерживает рабочее пространство для вас. Всякий раз, когда вы делаете git P4 rebase, вы в основном синхронизируете код в своей рабочей области, которая git-p4 затем воспроизводится как новые коммиты в вашем репозитории git. Всякий раз, когда вы делаете git P4 submit, он воспроизводит серию патчей в вашей Perforce workspace и отправляет их с помощью списков изменений Perforce.

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

Если у вас есть более подробные вопросы, я бы попытался разместить на форумах Perforce. В офисе есть пара людей, которые подробно изучили git-p4 и могли бы помочь.


возможно, вы найдете этот альтернативный инструмент интересным: http://lm1.github.io/git-p4s

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