git-p4 - любые отличные объяснения того, как это работает - PullRequest
7 голосов
/ 08 января 2012

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

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

  1. Точно следуйте инструкциям
  2. Импорт большого дерева без истории может занять некоторое время
  3. На большом дереве первая фиксация займет много времени, так как эта команда синхронизирует все дерево.
  4. Если вы делаете коммит, который вы не хотите отправлять на исполнение, вы должны выполнить «git rebase -i» и удалить запись коммита, которая не соответствует действительности. Вы не можете выполнить «git p4 submit», а затем «p4 revert» файл, который вы не хотите отправлять.
  5. Если вы что-то напутаете, все может запутаться.

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

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

Ответы [ 4 ]

9 голосов
/ 11 января 2012

Более подробная информация содержится в 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 запишет каждый номер списка изменений в соответствующем сообщении git commit. Например:

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

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

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 в главной ветке против обновленного пульта. Это приводит к тому же дереву git, которое было отправлено, но с отредактированными сообщениями фиксации, содержащими нотации [git-p4...].

Как сохранить несколько файлов, измененных в git, даже не отправляя их на p4?

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

2 голосов
/ 18 сентября 2013

Относительно «Какие коммиты ожидают выполнения для исполнения?»

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

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

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

1 голос
/ 09 января 2012

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

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

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

0 голосов
/ 10 ноября 2013

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

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

...