1. Ссылки
http://www.perforce.com/perforce/doc.current/manuals/p4guide/p4guide.pdf
- самый лучший источник, правда не факт что получится во всё ехать если начинать чтение именно с него
http://www.perforce.com/perforce/doc.current/manuals/cmdref/
- perforce commands
http://answers.perforce.com/articles/KB/2953
- perforce to svn users
http://www.perforce.com/perforce/doc.current/manuals/intro/01_intro.html
http://answers.perforce.com/articles/KB_Article/Mapping-Subversion-Terms-and-Commands-to-Perforce
http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_structure.html
http://www.youtube.com/watch?v=CtKkVDCJ0wo&list=PLH3pq2J85xsPlNfrmz8BgFuIzf3_k9pwY
http://www.youtube.com/watch?v=h3eZAdOWcIc
http://www.perforce.com/perforce/r10.1/manuals/p4v-gs/01_p4v-gs.html
http://www.perforce.com/perforce/doc.current/manuals/p4plugins/01_concepts.html
http://www.youtube.com/playlist?list=PLH3pq2J85xsPlNfrmz8BgFuIzf3_k9pwY
2. Философские замечания
0. При первом знакомстве лучше ограничиться гуёвыми
P4admin - админка репозиториев
p4v - клиент
p4 merge - отображение диффа между файлами. Затем можно попробовать и консольный клиент p4.
1. Perforce - это коммерческая система контроля версий. Бесплатное использование имеется. Выливается только в ограниченное количество рабочих мест. Дополнительно после установки perforce не требуется ничего ставить. Разработчики подчёркивают, что для других систем контроля версий нужно ставить и конфигурить apache. Для perforce всё поставляется из коробки.
2. Репозиторий называется словом депо. Файлы в репозитории по умолчанию - не редактируемые, чтобы сделать их редактируемыми требуется сделать checked out в GUI, или p4 edit в CUI. После того, как сделан checked out с файлами можно работать на редактирование.
3. Стадии Release AND development - это разные вещи.
4. На уровне p4admin администрироловки депов можно поконфигурить какой пользователь и к чему имеет доступ. Т.е. как правило у пользователя нет доступа ко всему репозиторию.
5. Есть подозрение, что правильные настройки сервера для системы контроля версий perforce позволяют собирать "уникальную" статистику по клиенту. Т.е. клиент отслылает информацию об изменения не только при коммите изменений.
3. Конфигурирование. Глобальные настройки по работе с репозиторием.
Эти параметры влияют на то куда ходить за репозиторием и от кого представляться.
Детально см. guide, стр.5, а если кратко то задавать параметры можно:
1. В командной строчке: p4 -p tcp:localhost:1666 sync //depot/dev/main/jam/Jambase
Перед командой sync можно указать так называемые global options
2. В конфигурационном файле, имя которого находится в переменной P4CONFIG (если эта переменная установлена)
3. User environment variables (on UNIX or Windows). Конфигурационные параметры можно хранить как переменные окружения (set)
4. System environment variables
5. Конфигурационные параметры можно хранить как переменные подсасываемые из реестра. Это актуально для Windows и OS X. Для работы с этими переменными следует использовать команду p4 set.
Самое важное это установить это установить эти параметры для соединения.
p4 set P4PORT=tcp:warhol:1666
p4 set P4USER=myname
p4 set P4PASSWD=mypasswd
Для соединения поддерживается tcp - plaintext communication over TCP/IP. Для шифрования контента при передаче perforce следует юзать префикс "ssl:". Затем требуется создать или выбрать какой-то воркспейс для работы. Самое важное для воркспейса это настройка маппинга путей с удаленного хранилища на пути на файловой системе.
4. Конфигурирование. Локальные настройки workspace по работе с репозиторием.
Для конфигурирования без помощи гуёв требуется использовать команду p4 client
Настраиваются правила мапа файлов репозитория на файловую систему: //имя_депо/... //имя_ворк_спейса/...
... -- означает все файлы и директории внутри.
* -- всё в рамках одной директории.
%%1 - %%9 -- позиционные макросы для перколбаса путей.
-// -- означает выкинуть (exclude) путь из workspace-а.
+// -- означает overlay проектов в одну директорию. (в директории будут находится файлы от двух путей)
Правила маппинга, которые указаны позже имеет более высокий вес, по сравнению с указаными ранее.
5. Отличающаяся терминология perforce и svn
6. Отличие perforce от svn по командам
Ссылка на хороший ман по perforce и по svn
http://www.perforce.com/perforce/doc.current/manuals/cmdref/index.html
7. Работа с тегами
Теги имеют семантику тегов в git.
p4 tag -l t1 //Y/main/... <=> промаркировать файлы тегом
p4 files @t1 <=> посмотреть список файлов под тегом
p4 sync @labelname <=> Обновление до тега
p4 label t1 <=> тяжелое специфицирование, что входит а что не входит в лейбл
p4 labels <=> посмотреть имеющиеся лейблы.
8. РАБОТА С ВЕТКАМИ
Небольшой ужас с обилием команд, и типами веток...
И так в perforce поддерживается на данный момент (2014 год) три типа веток.
-- понятие ветки в терминах Svn (codeline). Бранч это light копия файлов в репозитории.
-- понятие ветки в терминах git (branch). Бранч это именованая область в репозитории.
-- понятие ветки нового формата (stream)
Создание ветки в стиле svn:
p4 copy //depot/some_path/... //depot/branhces/br1/...
p4 sumbit
Короткая форма двух предыдущих команд
p4 populate //depot/some_path/... //depot/branhces/br1/...
так же можно создать ветку командой (правда в этом случае почему-то в revision graph ничего не видно)
p4 integrate //depot/some_path/... //depot/branhces/br1/...
populate - синоним copy.
Накат изменений для веток в стиле svn:
src, dst -- пути для файлов.
(в стиле svn)
1. Выполнить одну из команд p4 merge src dst |p4 integrate src dst
2. Резолв, и сабмит p4 resolve, p4 submit
Создание ветки в стиле git:
p4 branch test_br -- создание ветки
p4 branches -- просмотр доступных векток
p4 branch -d test_br -- удалить бранч.
Накат изменений для веток в стиле git:
p4 integrate -b test_br [to files]
p4 resolve
p4 submit
Трюки:
-- Накат конкретной ревизии файла из test_br: p4 integrate -b test_br //path_to_file@rev_num,rev_num
-- Опция -r в p4 integrate позволяет как бы менять местами src и dst
http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_integrate.html
http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_merge.html
http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_populate.html
Совсем новое понятие ветки (streams)
Это умные бранчи.
1. У каждой ветки есть определённый тип -- mainline, virtual, development, release, task.
2. p4 merge -S //projectX/dev -r -- получение данных из другого более стабильного стрима в свой. текущий dev.
3. p4 copy -S //projectX/dev - копирование из менее стабильного в более стабильный стрим. текущий mainline.
p4 stream -t mainline //arch/main_2 -- создать стрим типа mainline в репозитории //arch/main_2
p4 streams //arch/... -- посмотреть стримы для проекта репозитория arch
p4 merge -S //arch/dev1 -r -- находясь в //arch/dev1 хотим затащить себе изменения из mainline (родительского бранча)
p4 info | grep stream
Client stream: //arch/dev1 -- посмотреть текущий стрим
p4 copy -S //projectX/dev -- копирование из dev в main
p4 client -s -S //arch/main -- аналог svn swtich
9. Работа с job-ми
В perforce имеется кое-какая работа с тикетами.
p4 job jobname -- создание job-ы
p4 jobs -e "Status=open User=bruno filter.c" -- поиск джобы по фильтру
p4 fix -c 18 jobname -- линк ченйджа в джобу.
p4 submit -- с последющим заполнением поля Jobs в текстовом редакторе
10. Трюки
1. После оффлайн работы без использования p4 edit - требуется дёрнуть p4 reconcile чтобы файлы правильно добавились в индекс на редактируемые файлы.
2. Можно видеть в GUI через панель DEPOS некоторое знание о текущем статусе дел работы над файлами.
Синяя галка - кто-то работает выполнив p4 edit с файлом. Конкурентная работа разрешена, но это намёк на потенциальную опасность
Красная галка - мы открыли его на редактирование
Желтый треугольник - у нас не последняя ревизия в workspace
3. Про обмен с сервером. Можно получать/отдавать изменения на сервер с помощью протоколов tcp - текстовый протокол, без шифрования с обменом по tcp/ip, и по ssl - текстовый протокол с шифрованием. Фактически это первый "подаргумент" в параметре P4PORT
4. При выполнении команд GUI клиент пишет в лог приложения (окно внизу) реально заиспользованую консольную команду для дейсвия выбранного кнопками.
5. В клиенте во вкладке History можно через DragAndDrop набрасывать один коммит на другой для просмотра изменений по файлам.
6. В GUI клиенте можно просматривать граф ревизий файла.
7. Механизм p4 shelve/p4 unshelve -s change_list -c default позволяет делиться изменениям для code review
p4 changes -s shelved -u <user> -- просмотр за shelved-ых изменений.
8. Про P4IGNORE можно почитать здесь, печатаная страница 38
http://www.perforce.com/perforce/doc.current/manuals/p4guide/p4guide.pdf
9. p4 changes -s pending -u myname -- посмотреть мой pending changelist
p4 changes -s submitted -u myname-- посмотреть мои submited changelist-ы
p4 revert -k -c default //...-- откат изменений из changelist-а без фактического отката самих данных из изменений.
По сути файлы уходят из индекса для коммита.
10. backout -- откат конкретного чейнджа в истории,
rollback -- обновить файл до конкретной ревизии
11. Добавление оконки в unity:
Создать файл с описанием p4v.desktop
[Desktop Entry]
Type=Application
Name=P4V
Comment=Perforce Visual Client
Icon=/home/bruziuz/bins/p4v-2017.2.1573260/lib/p4v/P4VResources/icons/P4-V_48x48.png
Exec=/home/bruziuz/bins/p4v-2017.2.1573260/bin/p4v
Terminal=false
Categories=Development;
И перетащить его на панель для запуска в Unity/Ubuntu