Компания, в которой я сейчас работаю использует 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 и Perforce command line tools.
Если все правильно, то набрав в консоли git-p4 увидим:
1) Чтобы клонировать необходимую часть проекта, пишем в bat файле или в консоли:
Но, лично для меня привыкшего к использованию 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
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 rebase4) Сабмитим локальные изменения в 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