Это то, над чем я работал в течение последних двух недель. Он все еще развивается, но может быть полезно. Обратите внимание, что я сотрудник Perforce.
интро к Perforce для пользователей Git
Чтобы сказать, что переход от Git к Perforce или неволей Git является нетривиальной грандиозная занижение. Для того, чтобы быть двумя инструментами, которые якобы делают то же самое, их подход не может быть более разным.Эта краткая рецензия попытается помочь новым пользователям Perforce, пришедшим из Git, понять новый мир, в котором они находятся.
Один краткий обход перед тем, как мы погрузимся; если вы предпочитаете Git, вы можете хорошо использовать Git с Perforce. Мы предоставляем инструмент под названием Git Fusion, который генерирует репозитории Git, которые хранятся в синхронизации с сервером Perforce. Люди Git и Perforce могут жить в гармонии, работая над одним и тем же кодом, в основном не затрагивая их коллегами выбор контроля версий. Git Fusions 13.3 можно приобрести у Perforce web site. Он должен быть установлен администратором Perforce, но если вы его установите, вы обнаружите, что его функция разрезания репозитория может быть весьма удобна как пользователь Git.
Если вы не можете убедить своего администратора установить Git Fusion, Git сам по себе имеет привязку Perforce под названием Git-P4, которая позволяет вам использовать Git для изменения и отправки файлов в рабочее пространство Perforce. Более подробную информацию об этом можно найти по адресу: https://git.wiki.kernel.org/index.php/GitP4
Еще здесь? Хорошо, давайте посмотрим на Perforce.
Некоторые различия в терминологии перебирать
Прежде чем мы углубимся в детали, мы должны кратко рассмотрим пару терминологические различия между Git и Perforce.
Первый: Оформить заказ. В Git именно так вы получаете копию кода из данной ветки в свою рабочую зону. В Perforce мы называем это sync из командной строки или из нашего графического интерфейса P4V «Получить последнюю версию». Perforce использует слово checkout из P4V или p4 edit
из командной строки, что означает, что вы планируете изменить файл из системы управления версиями. В остальной части этого документа я буду использовать checkout в смысле Perforce этого слова.
Второй является Git commit против Perforce submit. Где вы будете совершать в Git, вы отправитесь в Perforce. Поскольку все операции происходят с общей службой управления версиями Perforce, Perforce не имеет эквивалента для git push
. Аналогично, у нас нет pull
; команда sync сверху заботится о получении файлов для нас. В Perforce нет концепции чистой локальной отправки, если вы не решите использовать наш инструмент P4Sandbox, описанный ниже.
Ключевые понятия Perforce
Если бы я был упростить неволей двух ключевых понятий, я бы сосредоточиться на склад и рабочее пространство. Хранилище Perforce - это хранилище файлов, которые находятся на сервере Perforce. Сервер Perforce может иметь любое количество складов, и каждый депо может содержать любое количество файлов. Часто вы будете слышать, как пользователи Perforce используют депо и сервер взаимозаменяемо, но они разные. Сайт Perforce может выбирать несколько серверов, но чаще всего все файлы находятся на одном сервере.
Рабочее пространство или клиент Perforce - это объект в системе, который отображает набор файлов на сервере Perforce в местоположение в файловой системе пользователя. Каждый пользователь имеет рабочее пространство для каждой машины, которую они используют, и часто у пользователей будет более одного рабочего пространства для одного и того же компьютера. Наиболее важной частью рабочей области является отображение или просмотр рабочей области.
В представлении рабочей области задается набор файлов в хранилище, которые должны отображаться на локальном компьютере. Это важно, потому что есть хороший шанс, что вам не нужны все файлы, доступные на сервере. В представлении рабочей области вы можете выбрать только тот набор, который вам интересен.Важно отметить, что рабочее пространство может отображать содержимое из нескольких хранилищ, но может отображать только контент с одного сервера.
Чтобы сравнить Perforce с Git в этом отношении, с Git вы выбираете набор Git-репозиций, который вас интересует. Каждое репо обычно ограничено областью, содержащей только связанные файлы. Преимущество этого заключается в том, что с вашей стороны не требуется настройка; вы делаете git clone того, что вам нужно, и все готово. Это особенно приятно, если вы работаете только с одним или двумя репозиториями. С Perforce вам нужно потратить немного времени на выбор и выбирая нужные фрагменты кода.
Многие магазины Perforce используют потоки, которые могут автоматически генерировать представление рабочей области, или они генерируют представление, используя сценарии или рабочие пространства шаблонов. В равной степени многие оставляют своих пользователей самостоятельно создавать свои рабочие пространства. Одним из преимуществ того, что вы можете сопоставить несколько модулей в одном рабочем пространстве, вы можете легко модифицировать несколько модулей кода в одном сеансе; вы можете быть уверены, что любой пользователь с похожим видом клиента, который синхронизируется с вашей записью, будет иметь весь код в правильном состоянии. Это также может привести к чрезмерно зависимому коду; принудительное разделение Git может привести к лучшей модульности. К счастью, Perforce также может поддерживать строгую модульность. Все дело в том, как вы решили использовать этот инструмент.
Почему рабочие пространства?
Я думаю, что, исходя из Git, легко почувствовать, что концепция всего рабочего пространства - это больше проблем, чем того стоит. По сравнению с клонированием нескольких репозиториев Git это, несомненно, верно. Там, где рабочие пространства сияют, и причина, по которой Perforce все еще в бизнесе после всех этих лет, заключается в том, что рабочие пространства - это фантастический способ избавиться от многомиллионных файловых проектов для разработчиков, но при этом упростить сборку и выпуск, чтобы собрать весь источник вместе один авторитетный источник. Рабочие пространства являются одной из основных причин, по которым Perforce может масштабироваться, а также делает это.
Рабочие области также хороши в том, что расположение файлов в хранилище и макет на машине пользователя могут варьироваться в случае необходимости. Многие компании организуют свое депо, чтобы отразить организацию своей компании, так что людям легко найти контент по бизнес-единицам или проекту. Однако их система построения могла бы заботиться об этой иерархии меньше. рабочее пространство позволяет им переназначить свою иерархию депо любым способом, который имеет смысл для их инструментов. Я также видел это, используемое компаниями, которые используют чрезвычайно негибкие системы сборки, которые требуют, чтобы код был в очень специфических конфигурациях, которые совершенно сбивают с толку людей. Рабочие пространства позволяют этим компаниям иметь исходную иерархию, которая является общедоступной, в то время как их инструменты построения получают необходимую им структуру.
Рабочие области в Perforce используются не только для отображения набора файлов, с которыми пользователь хочет работать, но также они используются сервером для отслеживания точно, какие изменения каждого файла синхронизируются пользователем. Это позволяет системе отправлять правильный набор файлов пользователю при синхронизации без проверки файлов, чтобы посмотреть, какие файлы необходимо обновить. С большими объемами данных это может быть значительный выигрыш в производительности. Это также очень популярно в отраслях, которые имеют очень строгие правила аудита; Администраторы Perforce могут легко отслеживать и регистрировать, какие разработчики синхронизировали файлы.
Дополнительную информацию о полной мощности рабочих мест Perforce читайте Configuring P4.
Явный заказ против неявного заказ
Одна из самых больших проблем для пользователей, переходящих из Git в Perforce является понятием явной проверки. Если вы привыкли к рабочему процессу Git/SVN/CVS при смене файлов, а затем сообщать системе управления версиями, что вы делаете, это может быть очень болезненный переход.
Хорошей новостью является то, что если вы так решите, вы можете работать с рабочим процессом Git в Perforce.В Perforce вы можете установить опцию «allwrite» на вашем рабочем пространстве. Это скажет Perforce, что все файлы должны быть записаны на диск с установленным битом записи. Затем вы можете сменить любой файл, явно не указав Perforce. Чтобы Perforce совместил эти изменения, вы можете запустить «статус p4». Он будет открывать файлы для добавления, редактирования и удаления по мере необходимости. При работе таким образом вы захотите использовать «p4 update» вместо «p4 sync» для получения новых версий с сервера; «Обновление p4» проверяет наличие изменений перед синхронизацией, поэтому не будет сжимать ваши локальные изменения, если вы еще не запускали «статус p4».
Почему Явная проверка?
Вопрос, который я часто получаю, - «зачем вам когда-либо хотеть использовать явный контроль?» Поначалу румянец может казаться сумасшедшим дизайнерским решением, но явное оформление действительно имеет некоторые преимущества.
Одна из причин использования явного контроля - устранение необходимости сканирования файлов для изменений содержимого. Хотя с меньшими проектами вычисления хэшей для каждого файла для поиска различий довольно дешевы, многие из наших пользователей имеют миллионы файлов в рабочей области и/или имеют файлы размером 100 мегабайт в размере, если не больше. Вычисление всех хэшей в этих случаях чрезвычайно трудоемко. Явная проверка позволяет Perforce точно знать, с какими файлами он должен работать. Такое поведение является одной из причин, по которой Perforce настолько популярен в крупных файловых отраслях, как индустрия игр, фильмов и оборудования.
Еще одно преимущество - это явная проверка, обеспечивающая форму асинхронной связи, которая позволяет разработчикам вообще знать, над чем работают их сверстники, или, по крайней мере, где. Он может сообщить вам, что вы можете избежать работы в определенной области, чтобы избежать бесполезного конфликта, или он может предупредить вас о том, что новый разработчик в команде бродил в код, который, возможно, им не нужен для редактирования. Мой личный опыт заключается в том, что я, как правило, работаю в Git или используя Perforce с allwrite в проектах, где я либо являюсь единственным вкладчиком, либо редким вкладчиком, и явным контролем, когда я плотно работаю с командой. К счастью, выбор за вами.
Явная проверка также прекрасно сочетается с концепцией Perforce ожидающих списков изменений. Ожидаемые списки изменений - это ведра, в которые вы можете поместить свои открытые файлы, чтобы организовать свою работу. В Git вы потенциально можете использовать разные ветви в качестве ведра для организации работы. Филиалы великолепны, но иногда приятно организовать вашу работу в нескольких именованных изменениях, прежде чем отправлять их на сервер. Благодаря модели Perforce, потенциально отображающей несколько ветвей или несколько проектов в одно рабочее пространство, ожидающие изменения списки упрощают проведение отдельных изменений.
Если вы используете IDE для разработки, например Visual Studio или Eclipse, я настоятельно рекомендую установить плагин Perforce для вашей среды разработки. Большинство плагинов IDE будут автоматически проверять файлы, когда вы начнете их редактировать, освобождая вас от необходимости самостоятельно делать чек.
неволей Замены для Git Особенности
git stash
==>p4 shelve
- GIT локального ветвления ==> либо полки Perforce или ветвь задачи
git blame
==>p4 annotate
или неволей Timelapse Посмотреть из Графический интерфейс пользователя
Работа отключена
Существует два варианта отключения отключений от службы управления версиями Perforce (это наш причудливый термин для сервера Perforce).
1) Использование P4Sandbox иметь полный локальный контроль версий и местных разветвлений
2) Редактировать файлы, как угодно и использовать «статус p4», чтобы сказать Perforce, что вы сделали
С обоих указанных выше вариантов вы можете выбрать установку «allwrite» в своем рабочем пространстве, чтобы вам не приходилось разблокировать файлы. При работе в этом режиме вы захотите использовать команду «p4 update» для синхронизации новых файлов вместо «p4 sync». «Обновление p4» проверяет файлы на наличие изменений перед их синхронизацией.
неволей QUICKSTART
Все следующие примеры будут с помощью командной строки.
1) Настройте подключение к Perforce
export P4USER=matt
export P4CLIENT=demo-workspace
export P4PORT=perforce:1666
Вы можете вставить эти параметры в файле конфигурации оболочки, используйте p4 set
, чтобы сохранить их на Windows, и OS X, или использовать конфигурационный файл Perforce.
1) Создание рабочей области
p4 workspace
# set your root to where your files should live:
Root: /Users/matt/work
# in the resulting editor change your view to map the depot files you care about
//depot/main/... //demo-workspace/main/...
//depot/dev/... //demo-workspace/dev/...
2) Получить файлы с сервера
cd /Users/matt/work
p4 sync
3) Извлекает файл, который вы хотите работать, и изменить его
p4 edit main/foo;
echo cake >> main/foo
4) Отправьте его на сервер
p4 submit -d "A trivial edit"
5) Запустите p4 help simple
, чтобы просмотреть основные команды, которые вам понадобятся для работы с Perforce.
Замечательный обзор. Я сохраню это (или результирующую запись на веб-сайте), чтобы предоставить некоторым из наших новых сотрудников. –
@ Matt говорит, что «из Git легко чувствовать, что вся концепция рабочего пространства - это больше проблем, чем того стоит». Возможно, но я делал такое отображение в RCS и CVS в течение многих лет. Не использовать CVS-модули, но создавая деревья символических ссылок, которые указывают на один или несколько CVS-репозиториев. Редкие деревья, не содержащие всех каталогов. По большому счету вы описываете, как Perforce делает это. Это может быть болью, чтобы поддерживать это в CVS. (И git, и hg, и bzr ... не так уверен в bzr.) –
Спасибо Matt, очень полезный читать. Я все еще думаю, что система управления версиями должна сказать мне, что я изменил локально по сравнению с удаленным репо или между ветвями, а не наоборот :) – jupp0r