git-p4 - любые отличные объяснения того, как это работает
Если вы используете perforce удаленно и хотите иметь удивительную скорость git для отслеживания различий, вот решение:http://kb.perforce.com/article/1417/git-p4
однако я заметил следующее:
- следуйте инструкциям точно
- это может занять некоторое время, чтобы импортировать большое дерево без истории
- на большом дереве первая фиксация займет много времени, так как эта команда синхронизирует все дерево.
- если вы делаете фиксацию, которую вы не хотите отправлять в perforce, вы должны сделать "git rebase-i" и удалить оскорбительную запись фиксации. Вы не можете сделать "git P4 submit", а затем" P4 revert " файл, который вы не хотите отправлять.
- если вы что-то испортите, все может стать очень запутанным.
и это мой вопрос. есть ли хорошее объяснение того, как 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, однако на данный момент работает только односторонняя синхронизация.