2009-08-28 4 views
19

Мой коллега был в восторге от возможностей с PerForce (нам в основном нужна способность логически группировать патчи и изменения, а поддержка SCM в этом случае была бы очень приятной). В настоящее время мы используем CVS и открыты для всех задач. Мы только немногие разработчики, которые используют простой Eclipse и запускают сборки, используя ant-скрипты.Стоит ли Perforce?

Прежде чем прыгать в воду, я хотел бы услышать других, которые по техническим причинам могут сказать «Хорошая идея» или «Плохая идея». Я также хотел бы услышать, насколько это навязчиво в вашей повседневной работе.


Редактировать 2011: Только для записи. Мы перешли на git - решающим фактором было то, что мы используем Eclipse, и eclipse.org идет на git, так что мы могли бы ожидать очень хорошей интеграции IDE. Мы немного разошлись - это было не до Eclipse 3.7 этим летом. Сегодня git отлично работает в Eclipse.


EDIT 2015: И оказалось, что мерзавец закончилась бесспорным победителем благодаря GitHub и общей поддержки IDE, который в сочетании с Maven наконец Java проектов IDE-агностик.

+0

Если вы просто хотите логически сгруппированных проверок a.k.a атомных проверок, то почему бы не попробовать svn. –

+0

Мы хотим что-то, что может сделать с ним БОЛЬШЕ, чем просто атомные коммиты. То есть данное исправление проблемы, состоящее из файлов X и т. д., является гражданином первого класса системы –

+1

Я не уверен, что вы получаете там? Вы говорите о работе Perforce? Они - достаточно хороший способ группировки наборов изменений, если вы хотите, - но скорее легкий вес в качестве системы отслеживания дефектов. –

ответ

20

Обновление ноября 2011:

Использование Git, а forcefully advocated по Tilo, очевидно, является лучшим выбором для целого ряда причин (децентрализации, частных фиксаций, ветвящихся, слияние, ...).
Я полностью осознаю различия между централизованным и децентрализованным VCS, как описано в «Describe your workflow of using version control (VCS or DVCS)».

Однако, используя его в большом предприятиене легко.
Я знаю. Я представил Git в большом предприятии:
я вскрыл общие причины в «Can we finally move to DVCS in Corporate Software? Is SVN still a 'must have' for development?» (в то время как еще говорят, что DVCS очень действительный выбор)

Но я действительно подробно основные болевые точки при установке Git на предприятии в "Distributed Version Control Systems and the Enterprise - a Good mix?".
У меня на самом деле представлены те боли в последних CodeKen 2011 (replacing the ex-DevDays 2011).
презентация назывались "Introducing DVCS in a big corporation", и чириканье было красноречиво:

  • Grundlefleck: Мое резюме: один не просто мерзавец в предприятие
  • ben_sim: @VonC_ переопределяет боль # codeken2011: перекомпиляции git и все его зависимости, чтобы вы могли использовать его на производственном сервере на предприятии.

Трюк с DVCS: вы по-прежнему нужен «сервер», централизованное место для всех разработчиков, чтобы получить «благословлен» версию своего репо.
И в крупной корпорации эти взаимные серверы являются ... взаимозависимыми, существует много других сервисов, что означает, что вы не можете просто добавить ваш Git на нем (у вас не будет подходящих библиотек на этом сервере).
Кроме того, вам понадобится ваш собственный ssh ​​и httpd для вашего пользователя, чтобы нажать/вывести на этот сервер.

Я фактически автоматизировал процесс установки для Git и всех его зависимостей/связанных сервисов в GitHub project compileEverything.

Итак, да, используйте Git.
На клиентском ПК вы можете установить и начать использовать его за считанные минуты!
Но на сервере big предприятие? Это не так просто.

Помните 2009:

  • поддержки Git на Windows, возможно, но все еще продолжается,
  • самого Git не включает в себя "smart http", что означало только протокол с аутентификацией для тягового/клона и push Операции были ssh: убедить пользователей генерировать и управлять общедоступными/закрытыми ключами ... проблематично, мягко говоря.
    Https возможно для pull и clone, даже если запрос был довольно неэффективным. Для push ... настройка включала WebDAV и была сложной. Smart Http изменил все это.
  • авторизационные слои были неуклюжими (gitosis), и gitolite едва начинал.
    И вам нужен уровень авторизации в большом предприятии.
    Не любой пользователь может получить доступ к любым репозиториям, некоторые из указанных хранилищ вполне конфиденциальны.

Оригинальный ответ, еще в 2009 году:

В корпорации, в закрытой централизованной среде, неволей, безусловно, является хорошим вариантом.
Выполняет checkout ваше рабочее пространство быстро, и управлять changeet красиво.
Он поддерживает «блокировку по умолчанию», которые помогают увидеть, кто это работает в одном файле.

Однако вы должны быть синхронизированы с сервером P4 на все время, и должны иметь надлежащую инфраструктуру для его поддержки, в том числе резервного копирования и DRP сценариев: если нет сервера, и вы продолжаете работать, удаление файла например, он не будет восстановлен при последовательных обновлениях.

Основная жалоба, которую я слышу от команд, использующих ее (так как я занимаюсь только небольшими задачами администрирования на инструменте) - это понятие «Inter-File Branching», немного запутанное сначала, но очень полезное.

В зависимости от уровня интеграции Perforce with your IDE (here eclipse) и редакторов основным назойливым аспектом является обеспечение синхронизации рабочего пространства.

Другие интересные ссылки для вас, чтобы читать:

+3

Я категорически не согласен с этим ответом! Perforce не стоит! Используйте Git! – 2011-11-23 01:17:49

+0

@UnixGuy: Я обновил свой ответ, в основном, чтобы согласиться с тем, что Git теперь является хорошим выбором («smart http» помог, что позволяет пользователям общаться с Git repo через https, используя свои учетные данные LDAP вместо того, чтобы генерировать ключи для ssh). Однако этот обновленный ответ указывает, что установка/администрирование не так просто. И часть обучения пользователей не является тривиальной (http://stackoverflow.com/questions/2479274/using-mercurial-in-a-large-organization или http://beust.com/weblog/2010/04/06/ГИТ-для-нервного-разработчик /). Так что да, используйте Git, но сначала посмотрите мой обновленный ответ. – VonC

+0

@UnixGuy и upvoters, очень проницательный, спасибо за эту дополнительную информацию, которая действительно поможет мне задуматься. – Benjol

3

Мы используем его, и он определенно имеет много «лакомства», чтобы рекомендовать его. Вы должны немного привыкнуть к этому и подумать «в Perforce».

В общем, у вас есть депо со своей структурой каталогов, и каждый пользователь имеет сопоставления, которые определяют, где эти файлы/каталоги будут размещаться локально. Это позволяет относительно легко заменить целые части иерархии на одни и те же части из другой версии, например, упростить управление различными версиями и ветвями вашего продукта.

Он также имеет поддержку управления наборами изменений и проверки их атомарно. Это может реально помочь, когда вы пытаетесь выяснить, что еще определенная проверка затронула в остальной части кода, а не только в файле, который вы сейчас просматриваете.

Мы использовали Vault перед Perforce, и все в целом переход был очень плавным без слишком большой потери производительности. :)

2

Я использую Perforce на работе, ранее используемые в CVS в моей последней работе. После начальной кривой обучения гораздо лучше использовать этот CVS. (Вероятно, легче учиться с нуля, чем CVS, но у меня нет такого опыта.) Если кому-то нужна централизованная система контроля версий, я бы рекомендовал Perforce, если у них были ресурсы для ее лицензирования.

С другой стороны, я недавно рассматривал некоторые распределенные системы управления источниками (git, Mercurial и Bazaar, в частности). У них много функций, которые выглядят очень интригующими, особенно не требуя постоянного подключения к серверу. Кроме того, вы можете настроить свою систему на «основной» сервер, даже с распределенными системами. Поэтому я бы предложил сначала взглянуть на одну из них и посмотреть, соответствуют ли они вашим потребностям.

+3

Что-то лучше, чем CVS :) –

2

Этот вопрос похож по своему характеру на то, насколько Ant лучше Maven или C# лучше, чем Java. На мнение людей будет влиять их боевой шрамы, и у большинства людей есть только тяжелый, полезный опыт от 1 до 3 инструментов SCM, поэтому вы не можете дать сбалансированное мнение.

Я бы начал с заседания с командой и перечисления недостатков CVS с точки зрения особенностей, производительности и интеграции. Затем просмотрите различные инструменты SCM, чтобы узнать, какие из них соответствуют вашим потребностям.

Хотелось бы попробовать попробовать Subversion, Git, Mercurial или один из других SCM с открытым исходным кодом? Если окажется, что они не подходят для цели, по крайней мере, это даст вам представление о том, что нужно искать при оценке Perforce.

+0

Хехе, мой коллега и я _are_ команда :) Отсюда необходимость услышать от других: D –

6

Perforce - довольно большой вес, особенно для небольшой команды.

Я бы настоятельно рассмотрел SVN или GIT, для хорошего твердого, хорошо поддерживаемого VCS, а затем используйте доступные инструменты и лучшие практики (все, что бесплатно от вашего дружественного локального интернета) для поддержки функций, которые вам нужны.

Например, с помощью SVN вы можете настроить свойства «bugtraq», которые помогают сгруппировать изменения. Мы просто вводим идентификатор ошибки с каждой фиксацией bugfix (вы даже получаете хорошее поле ввода для него в форматах регистрации GUI), а затем исправления mutli-commit по-прежнему группируются.

Разумные блог об этой функции здесь: http://markphip.blogspot.com/2007/01/integrating-subversion-with-your-issue.html

Опять же, это хорошо поддерживается инструментов, что делает его достойный вызов для нашей команды несколько.

Я недавно слышал о GIT о вещах GIT (черт возьми, ребята из Весны используют его, и это часто говорит о многом), но мы сами находимся в подчинении, так что это все, о чем я могу прокомментировать.

+1

Также P4 отличается от других SCM (не в хорошем смысле), что если вы начнете используя его, вероятно, вы умрете вместе с ним. – bogdan

5

На работе мы использовали Visual SourceSafe в течение многих лет, прежде чем переключиться на Perforce в прошлом году. Это определенно дорого, и у нас также есть скрипты сборки Ant, которые выполняются под пользователем «build», который считается одним лицензированным пользователем, который сожжен. Компания заплатила за двухдневный учебный семинар, поэтому разработчики быстро поднялись на скорость, но по-прежнему возникают вопросы, как делать foo и т. Д. (Я часть небольшой группы здесь, которая поддерживает других пользователей по проблемам Perforce - в основном из-за того, как работает Visual Studio, а не для Perforce).

Что касается использования Perforce, я думаю, что самая большая разница в том, как Perforce концептуализирует всю задачу отслеживания ваших изменений. Например, subversion сохраняет каталог с именем .svn для хранения метаданных о файлах; с p4, сам сервер p4 хранит список файлов, которые у вас есть. Это, по-видимому, самый большой источник проблем - кто-то говорит серверу p4 получать последние файлы для проекта, но затем вручную удаляет что-то. Когда он/она снова запрашивает сервер p4 для последнего, сервер p4 считает, что он/она уже имеет его, поэтому он не обновляется. Когда люди «получат» это, с ним становится намного легче работать. Вам просто нужно сказать серверу «удалить из рабочей области», а затем снова получить его.

У нас есть сочетание пользователей MS Visual Studio, а также Eclipse и IntelliJ, а поддержка плагинов p4 для всех этих функций достаточно хорошо. Ежедневная рутина проверки/выхода и получения последних не отличается. В основном мы используем базовые функции, и даже тогда это кажется улучшением по сравнению с Visual SafeSafe (опять же, из объявлений, которые я иногда вижу в сети, вероятно, что-то улучшается по сравнению с Visual SourceSafe). Просто наличие нескольких открытых списков изменений в то же время дает некоторым из нас большую гибкость в том, как мы работаем. Кажется, что настройки плагина Perforce предпочитают тихие проверки, которые сразу заметили многие пользователи, но мне это очень нравится, и я думаю, что в целом это улучшение производительности. В IDE будут выделяться имена файлов разного цвета, поэтому вы можете увидеть, были ли какие-то изменения изменены, и списки изменений p4 всегда показывают, что вы проверили в любом случае.

Слияние изменений, когда несколько пользователей проверили изменения в файле, довольно просто. Инструменты diff не являются супер-зрелищными, но мы можем довольно хорошо сравнивать конфликты по строке и просто щелкаем по тем, что хотим. Я должен отметить, что инструменты gui превосходны. Большинство разработчиков здесь не используют клиент p4v, но некоторые из них и я для него все время используют его. Я упоминал, что инструмент gui превосходный? Вы можете просмотреть все представленные списки изменений, посмотреть историю файлов, перетащить одну ревизию на любую другую ревизию и получить мгновенный diff, посмотреть на график изменений, который показывает историю ветвлений, посмотреть на «временный» вид (очень аккуратная функция - перетащите ползунок вперед и назад по верхней части экрана и просмотрите обновление содержимого файла с каждой ревизией).

Мы только сделали несколько ветвей корелина, так что мы еще не очень опытные с ним. До сих пор это было очень легко, и слияние изменений также довольно легко. В рамках учебного курса все получили экземпляр «Практического перфорса», написанный вице-президентом Perforce по технологиям или некоторым из них. Там довольно много контента о различных методологиях обработки кодовых линий и ветвления. Я думаю, что когда мы использовали SourceSafe, мы были настолько ограничены в том, что он мог сделать, что мы могли только мыслить определенным образом - Perforce гораздо более гибко, что внезапно на самом деле возможно иметь разные философии, когда/how/почему необходимо устанавливать коды и т. д. Поэтому в этом отношении мы все еще много разбираемся в ветвлении и интеграции (слиянии).

P.S. Двухуровневая настройка не требует лицензии и ограничивает только 5 рабочих областей. Вы можете оценить его без ограничения по времени. Они также предлагают бесплатное (но не подкрепленное) лицензирование для проектов с открытым исходным кодом.

+0

Мы используем perforce в команде из 6 человек и имеем в течение нескольких лет. Перфорические породы. Ветвящиеся породы. Очень прочная платформа. (У меня также есть большой опыт в области безопасного визуального источника и svn - Perforce намного выше этих систем.) – Jonesome

2

Большинство преимуществ Perforce также доступны в Subversion. Subversion также проще в управлении и не имеет столь жесткого требования оставаться подключенным к серверу.

Однако, я считаю p4 синтаксис гораздо проще в использовании и выход гораздо менее загадочны, чем svn.

2

Я работал с svn, cvs, vss, и теперь я работаю с perforce. Я использую для работы с baazar для своих личных проектов, и я пробовал git и mercurial.

Я не рекомендую вам вообще заниматься, и, конечно же, я не рекомендую вам VSS. Это небезопасно, ненадежно и непрактично работать. Это модель, которая гораздо более скручена, чем svn, cvs, git и т. Д. Также сложнее использовать скрипты (так как вам приходится иметь дело с представлениями, клиентами и другими системными переменными).

Я бы порекомендовал вам svn с любым обычным трекертом. Вы можете настроить его через svn-крючки по желанию .... В некоторых случаях было бы интересно разойтись (git, mercurial, baazar), но если у вас еще нет мнения, вы должны начать с svn ..

хорошо, это мое мнение конечно ...

+0

Perforce - кошмар, я бы согласился. –

2

Perforce является одновременно и дорогим, и ненадежным. Он не надежно помещает правильные файлы в рабочую область, оставляя с устаревшими версиями время от времени.

Существует много вещей, которые perforce получает право, и он может обрабатывать очень большие двоичные файлы проще других сопоставимых решений, но одной проблемы достаточно, чтобы я рекомендовал не использовать его для какого-либо проекта.

2

год составляет 2011

Короткий ответ: Нет! Используйте Git!

В прошлом я использовал и администрировал CVS и Perforce в крупных компаниях (~ 2000 человек) в течение нескольких лет. Я бы настоятельно рекомендовал использовать Git over Perforce в любой день - даже в корпоративной среде. Из-за CVS понадобилось некоторое время, чтобы понять «способ Git» делать что-то, но через короткое время, используя его, становится ясно, насколько превосходна парадигма.

Крупные компании, такие как Sun Microsystems, продемонстрировали еще в 2006 году, как выгодно использовать переход от централизованных систем управления версиями (CVS) к распределенным системам управления версиями (Mercurial).

IMHO Perforce - это, в основном, модифицированный CVS, который был запутан и сложен до такой степени, что крайне болезненно (и медленнее) использовать, и вам понадобится помощь их отдела обслуживания, чтобы все было сделано. Он разработан таким образом, что вам понадобится их сервисный отдел в какой-то момент или другой (например, когда вы пытаетесь автоматизировать процессы вокруг него). О, и лицензии действительно дороги! Почему вы хотите использовать такой продукт? Perforce действительно хорош для безопасности работы своих администраторов, хотя ;-)

Git, с другой стороны, является децентрализованной системой контроля версий (VCS), которая гораздо более подходит для работы разработчиков.Они могут легко создавать локальные (отбрасываемые) ветви, для разработки функций или исправления ошибок, и сохранять этот код локально под управлением версий, а затем при необходимости слить его обратно в публичный репозиторий. Их временные ветви не загрязняют проект. Если есть хранитель ворот, они могут попросить их внести изменения, или если есть публичный репозиторий, они могут легко объединить свои локальные изменения кода в него. Слияние или создание Diff - очень частая работа для разработчиков (!), И они очень быстрые с Git. Кроме того, Git очень надежна и легко обнаруживает повреждения диска (поскольку использует контрольные суммы SHA1).

Проект ядра LINUX использует Git очень успешно! Проверьте этот разговор, и перейти к минут 16..25, где Linux Торвальдс упоминает Perforce: http://vodpod.com/watch/65074-tech-talk-linus-torvalds-on-git

Длинный ответ:

Software эволюционирует, так что системы управления версиями (VCS). С тех пор, как Perforce был создан, многое было усвоено. В 1990 году мантра систем контроля версий должна была иметь централизованную систему, которая обрабатывает все программные проекты внутри компании. Весь ваш исходный код и филиалы в одном месте ... Это оказалось не только трудно и дорого управлять, но также показал некоторые огромные присущие недостатки:

  • простое требование для VCS является то, что если вы поместите файл в репозиторий, вы получите тот же файл с теми же разрешениями - неизмененными. С Perforce или CVS это не так.

  • , имеющие все виды разобщенных программных проектов чучела вместе в одной централизованной VCS действительно не очень хорошая идея

  • ветвления в централизованных системах управления версиями, как правило, огромная боль

    • создание новых филиалов медленно, требует и администрирует, и блокирует систему контроля версий (в случае Perforce или CVS: от нескольких минут до часа, жаль, что вы не можете зарегистрироваться, мы создаем новую ветку ...)
    • в целом ветви глобально видны, что означает t вам нужны хорошие соглашения об именах, и что люди обычно неохотно создают новые ветви (чтобы предотвратить «ветвление») - все же результат всегда беспорядок ветвей.
  • местное развитие осуществляется вне системы контроля версий, и код получает проверяется только после того, как он «стабильный» (это само по себе обесценивает имея VCS в первую очередь, потому что разработчики могут потерять несколько дней работы, если их локальных сбои диска)

  • разработчики не могу просто сделать местное отделение для нового развития функций, и он не появляется в централизованном VCS

  • проблем обычно возникают, когда компания пытается использовать их «централизованные» VCS в s everal географического положение (это, безусловно, вызывает проблемы и боль с Perforce)

  • администратором централизованной VCS становится узким местом

  • централизованная модель означает падение производительности, даже сделать простую вещь, как дифф , потому что все подразумевает работу сети

  • вы не можете работать в автономном режиме

  • люди должны иметь доступ совершить-проверить в коде

  • Слияние с Perforce или CVS является утомительным, трудоемким и, следовательно, дорогостоящим! ... и очень частое задание, которое разработчики должны делать!

+0

Я согласен с вами в этой идее (используя Git), но вы забыли шаг установки/администрирования, который нелегкий на крупном предприятии. Я обновил свой ответ. Пожалуйста, помните, что это было написано в 2009 году. Гит не был таким очевидным выбором тогда, особенно в Windows, который является ОС выбора для пользователей на предприятии. – VonC

+0

http://nathanj.github.com/gitguide/tour.html, http://kylecordes.com/2008/git-windows-go, http://lostechies.com/jasonmeridth/2009/06/01/git -for-windows-developers-git-series-part-1/ – Tilo

+0

Просто, чтобы быть уверенным: я полностью согласен, что Git на окнах больше не проблема. Git on Windows готова за считанные минуты. Тем не менее, на крупном предприятии, которое хочет соблюдения DRP (плана восстановления после стихийных бедствий) для соответствия требованиям BCM (управление непрерывностью бизнеса), любой сервер * Repository * не будет одним из Windows, но * большим * unix одним со многими службами и репозиториями на нем (другие репозитории VCS, репозитории Nexus со всеми артефактами для разработчиков, но также и для производственных серверов ...): и в этом и заключается трудность. – VonC

0

Плагин P4Eclipse неволей для Eclipse, имеет Team -> Создать параметр Patch, как описано здесь:

http://www.perforce.com/perforce/doc.current/manuals/p4eclipse/topics/patch.html 

В случае, если вы хотите, чтобы положить ваши ноги в воде, неволей имеет свободный 20- Пользователь издание вы можете проверить с бесплатной поддержкой:

http://www.perforce.com/downloads/Perforce/20-User

для создания патчей с помощью командной строки в Perforce вы можете запустить «p4 diff2 -u» для генерации патч совместимый выход, но изменения должны быть представлены уже.

Чтобы обработать создание патчей в Perforce через P4V, вы можете отложить ожидающий список изменений в одном рабочем пространстве, а затем удалить его в другом. Вот блог показ стеллаж в действии:

http://www.perforce.com/blog/130304/light-code-review-shelving

Надеется, что вы найдете то, что вы ищете, что вы решили.

Смежные вопросы