Perforce -- кто-нибудь реально пользует?

Realist

Пересел на Perforce С SVN и мучаюсь ощущением, что Perforce — это неудобно и странно. Скажите, я чего-то не понимаю, просто не привык или это правда убожество?

pitrik2

а что конкретно не так?
судя по простейшему компаризону, перфорс даж покруче свн будет
http://en.wikipedia.org/wiki/Comparison_of_revision_control_...

pitrik2

во
более крутая сравнилка
http://versioncontrolblog.com/comparison/CVS/Git/Perforce/Su...
плюсы перфорса:
- чейнджсеты
- пермишены
ну и самое интересное я та и не понял, есть ли там итеративные мерджи, которые в свн 1.5 добавили
хотя есил полноценные чейнджсеты, то наверна такие мерджи и не нужны

Andbar

плюсы перфорса:
- чейнджсеты
- пермишены
гм... Не работал с Perforce, оцениваю сравнивалку по SVN и TFS. Честно говоря, не заметил принципиальной разницы между subversion'овскими ревизиями и TFS-ными чейнджсетами. По сути, разница в терминологии. В сравнивалке нормальная поддержка чейнджсетов приписывается только TFS. Что касается разрешений, то там почему-то написано только про вебдав-модуль, хотя svnserve тоже поддерживает per-repository и per-directory разрешения.

Helga87

Perforce — это неудобно и странно
да. Его большой плюс — это permissions на директории. Поэтому у нас его юзают. Но поверх него на клиенте довольно много людей используют git + набор скриптов, которые делают экспорт и импорт из perforce.

redzor

юзаем перфорс. Из минусов - нельзя сделать нормально ролбек к ревизии. Нужно ручками файлики откатывать.

Helga87

юзаем перфорс. Из минусов - нельзя сделать нормально ролбек к ревизии. Нужно ручками файлики откатывать.
Нет, это вы не умеете его готовить.

redzor

хм. да, оказывается, там есть некий набор действий, который в итоге приводит к ролбеку. Спасибо.

psihodog

In the 2008.2 release of P4V, a new feature was added to automatically rollback a changelist.

Realist

1. Этой суке надо докладываться, что я собираюсь менять. Если я взял файл на редактирование, я не могу его переименовать или там удалить.
2. Эта тварь привязана к структуре каталога. Если у меня есть символьная ссылка на папочку в глубине проекта, с которой я сейчас работаю, то эта гадина не понимает, что она эти файлы на самом деле контролит, а не в первый раз видит.
3. Это недоразумение требует, чтобы я делал переименование в два этапа: integrate + delete. Я за такую концепцию, но не понимаю, почему я должен давать лишние команды или писать свои обертки.
4. Это убожество навводило сущностей мама не горюй. Клиент (это соответствие дерева файлов на сервере и локально ченджлист. Максимум моих желаний — это скачивать часть проекта, а не весь проект. Зачем мне менять взаимное расположение папок локально, я не понимаю.
Что до ченджлистов, то я в любом случае могу закомитить только часть листа. Так что радости от того, что я заранее могу эту часть отобрать, я не нутрю.
5. Говорят (сам не успел проверить нет нормальных плагинов для студии.

ppplva

Клиент (это соответствие дерева файлов на сервере и локально ченджлист
Рабочая копия (на стероидах ревизия/коммит. Сущностей ровно столько же, сколько и в аналогах, просто они по-другому называются.
Неудачное, имхо, решение, что сервер знает обо всех клиентах. Из-за этого многие операции тормозят, и серверу нелегко приходится. В плюсе - всегда можно посмотреть над чем работает товарищ (pending changelist но это легко можно сделать, например, в git, расшарив персональные репозитарии readonly.
И еще вещь, которой я не могу понять - зачем нужна возможность иметь более одного pending changelist, если они не могут пересекаться по файлам?

deniska

5. Говорят (сам не успел проверить нет нормальных плагинов для студии.

Хм. Я не знаю, что значит нормальный плагин, но у нас при переходе на Perforce проблем со студией не возникло. Основные команды для Perforce из студии делаются без проблем. И, если я не путаю, ничего дополнительно мы не ставили.

pitrik2

может у тебя 2008 студия?
хотя все равно не верится что оно без плагина работает

Andbar

хотя все равно не верится что оно без плагина работает
даже взаимодействие с TFS идёт через плагин, другое дело что мб. какая-то специальная сборка дистрибутива студии, либо perforce сотрудничают в мелкомягкими и те включили их плагин в дистр.

Realist

Вопрос в том, зачем эти сущности введены явно: я могу их создать или отредактировать до реального использования, о них знает сервер.
Например, почему бы этому perforce не заставить меня еще настройки сетевого подключения указывать. Этот ченджлист я, мол, пошлю по этому сетевому интерфейсу, а вот этот — по другому и к серверу полезу не по имени, а по ip-шнику. Такая же сущность, как подключение клиента к серверу, тоже ж есть.
Я не понимаю, зачем мне заранее формировать чендж-лист, до того, как я собираюсь нажать Submit. Да еще она норовит разных ченджлистов наплодить. Например, ГУЙ при переименовании файла по умолчанию засовывает его в новый ченджлист.
Да, кстати, еще эта тварь делает diff по всем взятым на редактирование файлам. Понятно, что я на редактирование беру сразу весь проект (ну там всю папку чтоб не бегать с командой p4 edit по каждому файлу. Так вот, я запускаю p4 diff — она мне про каждый файл сообщит, что он был не отредактирован. В ГУИ она на каждый файл создаст окно: либо с реальным дифом либо "файл не был изменен. OK?" И я как баран там должен 30 раз OK жать.
Далее, я не вижу кайфа редактировать соответствие локальных папок дереву каталогов на сервере. Функциональности svn в этом вопросе мне хватало выше крыши.

Fimida

Its depends

psihodog

1. Этой суке надо докладываться, что я собираюсь менять.
Есть такое, но, вроде, больших неудобств не вызывает.
Из плюсов, ты видишь, что файл, который ты хочешь редактировать, уже кем-то редактируется. Иногда полезно.
Плюс ещё ты сразу видишь, какие файлы ты редактируешь.
4. Это убожество навводило сущностей мама не горюй. Клиент (это соответствие дерева файлов на сервере и локально ченджлист. Максимум моих желаний — это скачивать часть проекта, а не весь проект. Зачем мне менять взаимное расположение папок локально, я не понимаю.
Чо?
Что до ченджлистов, то я в любом случае могу закомитить только часть листа. Так что радости от того, что я заранее могу эту часть отобрать, я не нутрю.
радость в том, что если ты работаешь над одной проблемой, а тебе нужно временно переключиться на другую, то сохранить во временный ченжлист свою предыдущую работу очень удобно. то что ченжлисты не могут пересекаться по файлам — это да, не очень удобно, но лучше что-то, чем ничего.
5. Говорят (сам не успел проверить нет нормальных плагинов для студии.
говорят, что ни для каких SCM, кроме VSS'а, нет нормальных плагинов для студии. Тот что есть — вполне терпим, но мы его не юзаем. Так удобнее.
Самое большое неудобство, которое, как и большинство вышеописанных, вытекает из того, что перфорс хранит метаинформацию в файловой системе, заключается в том, что если ты отредактируешь файл, не сказав об этом перфорсу, то его начнёт глючить.

psihodog

Понятно, что я на редактирование беру сразу весь проект (ну там всю папку чтоб не бегать с командой p4 edit по каждому файлу.
Не стоит так делать.
Так вот, я запускаю p4 diff — она мне про каждый файл сообщит, что он был не отредактирован. В ГУИ она на каждый файл создаст окно: либо с реальным дифом либо "файл не был изменен. OK?" И я как баран там должен 30 раз OK жать.
Открой для себя команду "revert unchanged files".

pilot

И чего не хватает в svn?
Единственная принципиальная разница — distributed или нет.
Как у вас организована разработка что svn недостаточно?

pitrik2

И чего не хватает в svn?
Единственная принципиальная разница — distributed или нет.
Как у вас организована разработка что svn недостаточно?
ты меня спрашиваешь?
ты грига спрашивай

Andbar

говорят, что ни для каких SCM, кроме VSS'а, нет нормальных плагинов для студии. Тот что есть — вполне терпим, но мы его не юзаем. Так удобнее.
vss - гавно и плагин для него убог.
Очень хороший плагин для TFS (кстати, он тоже докладывается серверу об изменённых файлах).
Для svn есть вполне юзабельный плагин, с основными действиями справляется достаточно хорошо (хотя не хватает работы с trac-ом).

psihodog

vss - гавно
ну это-то никто не спорит
плагин для него убог.
что значит убог? не позволяет делать что-то что позволяет делать нативный клиент?
или там хуже это делается?

Andbar

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

Realist

Есть такое, но, вроде, больших неудобств не вызывает.

Каждый нужный файл отыскивыать в файловой системе и забирать на редактирование — у меня это вызывает неудобство. Если ему так надо подсказки, я был бы рад, если бы он отслеживал, у каких файлов я снял read-only флаг.
Плюс ещё ты сразу видишь, какие файлы ты редактируешь.

А смысл? Они у меня в студии и так открыты.
Чо?

Я говорю, что сущность workspace лишняя в моем понимании. Я не знаю, зачем она нужна. В SVN ничего такого нету. Кроме того, я не понимаю, почему эту сущность местами perforce называет client (например, переменная среды p4client как раз устанавливает имя воркспейса, с которым ты работаешь).
Не стоит так делать.

Почему? Чтобы не вводить в заблуждение коллег относительно того, что я редактирую? Кстати, я работаю в персональном бранче.
Открой для себя команду "revert unchanged files".

Отлично. Я либо должен согласиться брать файлы по одному, а не целыми папками (см. выше либо имею следующую фигню. Вместо нормального дифа я должен выполнить revert unchenged, потом diff, потом опять взять файлы на редактирование.
В любом случае, почему я должен как-то компенсировать кривость diff`а? Или есть какой-то сакральный смысл докладываться о неизмененных файлах тоже? Помнится, я читал о принципе "молчание - золото" для программ.

Realist

Есть мнение, что svn сильно тормозит на update и commit при большом числе файлов. Понятно, что perforce тут будет куда как более шустрый, поскольку предполагает, что я без его ведома ничего не делал.

Andbar

Каждый нужный файл отыскивыать в файловой системе и забирать на редактирование — у меня это вызывает неудобство. Если ему так надо подсказки, я был бы рад, если бы он отслеживал, у каких файлов я снял read-only флаг.
А плагин для студии не умеет это делать при попытке изменения файла? (как это делает TFS)
Я говорю, что сущность workspace лишняя в моем понимании. Я не знаю, зачем она нужна. В SVN ничего такого нету. Кроме того, я не понимаю, почему эту сущность местами perforce называет client (например, переменная среды p4client как раз устанавливает имя воркспейса, с которым ты работаешь).
А он позволяет содержать на одном компе несколько воркспейсов?

Realist

Плагин для студии я не смотрел. Почему-то мы его не используем. Надо выяснить подробней.
Можно содержать сколько хочешь вокрспейсов. Я в svn и без этой шняги могу насоздавать рабочих копий сколько угодно по всему винту.

psihodog

Каждый нужный файл отыскивыать в файловой системе и забирать на редактирование — у меня это вызывает неудобство.

Зачем в системе? Прямо из студии можно. И не обязательно ставить для этого плагин. Пишешь свой собственный макрос:
Imports EnvDTE

Public Module Perforce
Sub Edit
Shell("p4 edit """ + DTE.ActiveDocument.FullName + """", AppWinStyle.Hide)
End Sub

Sub EditSel
Dim item As SelectedItem
For Each item In DTE.SelectedItems
Dim prji As ProjectItem
prji = item.ProjectItem
Dim i As Integer
For i = 1 To prji.FileCount
Shell("p4 edit """ + prji.FileNames(i) + """", AppWinStyle.Hide)
Next
Next
End Sub
End Module

Добавляешь в конекстное меню редактора макрос Perforce.Edit, а в контекстное меню Project/Solution->Item макрос Perforce.EditSel, и всё. Теперь у тебя по правому клику в открытом документе и на выделеных итемах в солюшене, можно будет сделать check out прямо из студии.
upd: Если не знаешь, как добавлять, и куда совать макросы, почитай здесь.
А смысл? Они у меня в студии и так открыты.
То есть, ты пока файлы не закоммитишь, в студии их не закрываешь? :shocked:
Почему? Чтобы не вводить в заблуждение коллег относительно того, что я редактирую?
Чтобы не было соблазна редактировать всё подряд. При прочих равных, чем меньше файлов поменяешь, тем лучше. Ну, это, конечно, моё мнение.
В любом случае, почему я должен как-то компенсировать кривость diff`а?
А в чём заключается кривость diff'а?
Если юзаешь GUI, то будь готов нажимать Ok по поводу и без. :-)

Realist

За скрипт большое спасибо. Я далек написания макросов для студии :(
Понятно. Тебе удобно редактировать поменьше файлов и видеть, какие именно файлы ты редактировал. Кайфа ни того ни другого я не понимаю.
Кривость гуишного диффа в том, что он открывает файлы по одному. На неизмененные файлы выдает сообщение и кнопочку ОК. Ну эт может в ГУИ так принято, хрен с тем, я не гордый, я из консоли могу запустить. НО ТУТ ТОЖЕ ЖОПА. Консольный p4 diff на каждый неизмененный файл печатает строчку с именем файла. Если у меня 100 файлов на редактироовании, так у меня в диффе на халяву уже 100 строчек фигни бессодержательной. Да и формат самого диффа мне не нравится. Есть подозрения, что patch это не скушает.

deniska

Посмотрел \ спросил как у нас ставили. Мы просто ставили дистрибутив Перфорса, который нам сам в 2005 студию автоматически воткнул свой плагин, чтобы студия с ним корректно работала.

enochka1145

И еще вещь, которой я не могу понять - зачем нужна возможность иметь более одного pending changelist, если они не могут пересекаться по файлам?
Хранилища же запирают время от времени. С несколькими changelist-ми ты можешь не ждать разрешения на влив, а начать работать над другой, ортогональной, задачей.

ppplva

Иногда даже самые ортогональные задачи требуют изменений в одном и том же файле. В Makefile, например. И не всегда это можно предвидеть заранее. И когда после нескольких часов/дней работы вдруг выясняется, что чейнджлисты сейчас пересекутся - блестящий план накрывается п#$дой.
Нет уж, или по честному, как в git, hg, bazaar и куче других, или у меня будет по клиенту на каждое изменение.

enochka1145

Кривость гуишного диффа в том, что он открывает файлы по одному. На неизмененные файлы выдает сообщение и кнопочку ОК
Revert unchanged files помогает не только здесь, но и в ситуации, когда ты изменил несколько файлов, а P4 не доложил (скажем, за пределами Студии). Просто открываешь все файлы директории для редактирования (open for edit а затем - revert unchanged files.
Оставить комментарий
Имя или ник:
Комментарий: