8 февр. 2014 г.

Git-p4 работа с Perforce через Git

    Компания, в которой я сейчас работаю использует Perforce в качестве основной VCS. Централизованная система управления версиями такая как Perforce весьма удобна для больших компаний она способна справится с огромной базой кода и множеством различных бинарных данных.

   Но, лично для меня привыкшего к использованию Git оказалось довольно трудным обходится без тех возможностей которые он дает. Удобная работа с ветками (branch), их слияние (merge), быстрое переключение между ними, откат изменений (revert) и правка последних комитов это, и многое другое, действительно упрощает процесс разработки делая его более удобным, быстрым и гибким.

   Конечно, всегда можно взять необходимую часть проекта и просто положить под контроль Git’а. И все будет идти хорошо ровно до того момента, когда нужно будет как-то взаимодействовать с другими разработчиками которые пользуются только Perforce. Это достаточно неудобно...

   К счастью, есть написанный на питоне скрипт "git-p4" который дает возможность непосредственно взаимодействовать с сервером Perforce используя git-p4 команды. Этот скрипт достаточно сохранить (можно без расширения *.py) в папку "C:\Program Files (x86)\Git\bin" (она должна быть включена в переменной среде PATH). И в этой же папке, необходимо создать пакетный файл (batch file)
"git-p4.bat" со следующим содержимым:
@python "%~d0%~p0git-p4" %*
Это позволит обойти отсутствие поддержки Python в последних версиях "Git for Windows".
Также, в системе должен быть установлен сам Python и Perforce command line tools.

Если все правильно, то набрав в консоли git-p4 увидим:
C:\Users\LVI>git-p4
usage: C:\Program Files (x86)\Git\bin\git-p4 <command> [options]
valid commands: clone, rollback, debug, commit, rebase, branches, sync, submit
Try C:\Program Files (x86)\Git\bin\git-p4 <command> --help for command specific help.
Несколько сопоставлений с Git командами:
  • git push --- git-p4 submit
  • git fetch --- git-p4 sync
  • git pull --- git-p4 rebase
Перед инициализацией Git репозитория, сперва для него нужно создать отдельный Workspace в Perforce. Это можно сделать несколькими способами: через P4V Visual Client, объявив переменную среды P4CLIENT или создав файл p4config.txt (в корне Workspace директории):
P4CLIENT=GitP4client
P4USER=username
P4PORT=perforce:1666
Теперь, рабочий процесс будет сводится к следующему:

1) Чтобы клонировать необходимую часть проекта, пишем в bat файле или в консоли:
p4 set P4CONFIG=p4config.txt
p4 client
git-p4 clone --use-client-spec --detect-branches //depot/some/path/xxx_project
В первой строчке задаем текущий конфиг (поиск файла p4config.txt будет вестись начиная с Workspace "Root" директории и продолжится до корня диска), вторая откроет client spec в котором можно будет задать workspace mapping.

2) Комитим изменения локально в Git (обычная работа с Git так, как привыкли)
git commit some_file
Единственное замечание, вместо "git merge" лучше использовать "git rebase".

3) Забираем последние изменения из Perforce depot’а:
git-p4 rebase
4) Сабмитим локальные изменения в Perforce depot:
git-p4 submit
Перед каждым сабмитом в Perforce, обязательно делаем "git-p4 rebase".

Links:
How to use Git-P4: http://answers.perforce.com/articles/KB_Article/Git-P4#working_in_git
Git-p4 Docs: http://git-scm.com/docs/git-p4
Git-p4 Wiki: https://git.wiki.kernel.org/index.php/Git-p4_Usage
Git for Windows: http://git-scm.com/download

Комментариев нет:

Отправить комментарий