Что нынче круче SVN ?

stm7884696

В одном из недавних тредов проскочила фраза, что svn нынче уже не моден и устарел.
А что пришло ему на замену?

Andbar

Mercurial?

sergeikozyr

тьху стыд
hg, git, bzr и пр.

stm7884696

а из перечисленных для ведения проекта "сайт на php + дизайн в темплейтах + набор служебных скриптов" какой лучше подходит?
С условием того, что локально можно поработать и в генту, но вот удаленно - только из под винды XP и 7 ?

sergeikozyr

Mercurial, т.е. hg
bzr

stm7884696

hg
bzr
а из них что предпочесть ?

yroslavasako

hg.
Но лично я предпочитаю git из фанатизма к языку реализации. Реальных преимуществ у него нету.

S9000

Если работаешь в одиночку, то Hg тебе не сильно поможет, он крут своей способностью мержить разные версии кода. Тебе и SVN хватит. А если разработчиков штук 10-15, то тогда Hg значительно круче SVN - меньше ручной работы по разрешению конфликтов, проще коммититься (перед этим не обязательно делать update, как в SVN).

saveliev_a

А для гита под винду есть TortoiseGit, которые удобнее TortoiseHg.

yroslavasako

а зачем? мне вот кажется, что эклипсовых плагинов и для hg и для git достаточно.

okis

Черепашки — это более общие инструменты, чем интеграция с ide. Хотя последнее, конечно, предпочтительней.

sergeikozyr

Если работаешь в одиночку, то Hg тебе не сильно поможет, он крут своей способностью мержить разные версии кода. Тебе и SVN хватит. А если разработчиков штук 10-15, то тогда Hg значительно круче SVN - меньше ручной работы по разрешению конфликтов, проще коммититься (перед этим не обязательно делать update, как в SVN).
херня
знаешь почему?
потому что настроить репозиторий git/hg – халява. А svn – не халява.

okis

А svn – не халява.
Почему не халява? Под винду есть visualsvn, там вообще никаких конфигов писать не надо. Без него — пару команд написать.

saveliev_a

Потому что используется не только для исходников.

doublemother

svnadmin create myrepo

Офигеть, как сложно настроить.

sergeikozyr

что-то там ещё было, не надо, я помню

ppplva

Ну как же, необходимость придумывать отдельную директорию для репы, а потом чекаутить из нее. Феерические траблы с правами доступа, если комитить могут несколько локальных юзеров.

doublemother

Тебе не рассказали про группы пользователей?
И, да, я смолчу про управление правами доступа в гите — про возможность ограничения коммитов только определенной папкой проекта, например. И про доступ к гиту по сети заодно смолчу, почему-то аналога удобному dav-svn всё нет и нет.
Про hg и bzr правда ничего не могу сказать, не пользовался, может там всё это есть.

ppplva

Тебе не рассказали про группы пользователей?

Слышал краем уха.
It can be quite tricky to get a bunch of users with existing SSH accounts to share a repository without permissions problems.

The SVN book подтверждает.

okis

> что-то ещё надо было
Стоило поднять apache с mod_dav_svn (или как его там это позволит избежать проблем с правами. Я, во всяком случае к svn в локальной папке никогда не обращался.

Serab

папке
щас тебя зачмырят!

Andbar

И всё-таки, для персонального использования удобнее hg, чем svn по двум причинам: hg создаёт только одну директорию .hg в корне репозитория (не нужно настраивать исключения при поиске в файловом менеджере) и с hg-репозиторием можно работать как с папкой-проектом (например, записать на флешку).
(хотя, для пользователей студии есть одно небольшое преимущество последнего - AnkhSvn поудобнее чем VisualHG, но для людей, привыкших к командам scm, это не проблема, всё равно с файлами, не включёнными в проект VS, придётся не через плагин работать)

sergey_m

Самое главное: а правда ли это, что если я перейду с svn на hg или даже git, то мой php-код станет лучше? И ещё, сейчас мой код лежит в cvs, наверное он совсем говно?

Bibi

переходи на git. заодно и самооценку скорректируешь

Ivan8209

> с hg-репозиторием можно работать как с папкой-проектом (например, записать на флешку).
Просто потрясающий своей красотой аргумент.
Ни разу не пробовал переписывать репозитории CVS/Subversion?
---
Расширь своё сознание!

Ivan8209

>> папке
> щас тебя зачмырят!
А что такое файл?
---
...Я работаю антинаучным аферистом...

yolki

а мне вот непонятно, какие могут быть проблемы.
единственное место возникновения проблем - это использовать file:// в качестве доступа к репозиторию - но это же верх идиотизма! такое себе можно позволить только в однопользовательском режиме.

doublemother

The SVN book подтверждает.
Практический опыт у нас на работе подтверждает обратное. Легким движением руки добавляем пользователя в группу developers и брюки превращаются...
Кстати, еще из ряда "свн говно" расскажи мне, как в гите зачекаутить отдельную папку/файл проекта, обновить/откатить только один файл проекта до нужной ревизии, поправить в этой зачекаутенной папке что-нибудь и закоммитить обратно в origin-репу.

sergey_m

переходи на git. заодно и самооценку скорректируешь
Спасибо за совет. Я так и думал!

Serab

>> папке
> щас тебя зачмырят!
А что такое файл?
ответ "напильник" подойдет, или ты по делу говоришь?

Andbar

> с hg-репозиторием можно работать как с папкой-проектом (например, записать на флешку).
Просто потрясающий своей красотой аргумент.
Ни разу не пробовал переписывать репозитории CVS/Subversion?
в случае svn телодвижений заметно больше.

Andbar

Кстати, еще из ряда "свн говно" расскажи мне, как в гите зачекаутить отдельную папку/файл проекта, обновить/откатить только один файл проекта до нужной ревизии, поправить в этой зачекаутенной папке что-нибудь и закоммитить обратно в origin-репу.
ты уверен, что должен хотеть делать так?

conv3rsje

Кстати, еще из ряда "свн говно" расскажи мне, как в гите
Формально этот вопрос конечно относится к разряду "как в гите сделать ровно то же что делает свн", но если тебе действительно интересен процесс, то вот как практически аналогичные действия делаются
зачекаутить отдельную папку/файл проекта,
обновить/откатить только один файл проекта до нужной ревизии,
поправить в этой зачекаутенной папке что-нибудь и
закоммитить обратно в origin-репу.
git clone для локальных реп практически бесплатен, либо делаешь ветку и в ней колупаешься, так что первый пункт опускаю (если чо, да, git не умеет делать клона поддиректорий репы)
git reset REV PATH откатит файл до нужной версии
git commit PATH его закоммитит
git push origin зальёт эти изменения
Разве нет?

doublemother

git clone для локальных реп практически бесплатен, либо делаешь ветку и в ней колупаешься, так что первый пункт опускаю (если чо, да, git не умеет делать клона поддиректорий репы)
git reset REV PATH откатит файл до нужной версии
git commit PATH его закоммитит
git push origin зальёт эти изменения
Разве нет?
Всё здорово, но имело бы смысл только при выполнении первого пункта. Я не хочу клонировать сотню мегабайт удаленного проекта со всей историей ревизий, только чтобы поправить файл файл переводов.

doublemother

ты уверен, что должен хотеть делать так?
Да, уверен. Типичный пример, у проекта может быть набор переводов:
/translations/ru/
/translations/en/
/translations/es/
...

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

conv3rsje

Всё здорово, но имело бы смысл только при выполнении первого пункта. Я не хочу клонировать сотню мегабайт удаленного проекта со всей историей ревизий, только чтобы поправить файл файл переводов.
Ну сделай shallow clone и засабмить патч обратно, делов то. Никакую историю не надо вытягивать.

doublemother

Ну сделай shallow clone и засабмить патч обратно, делов то. Никакую историю не надо вытягивать.
shallow clone всё равно вытаскивает весь проект целиком. Несмотря на всю пианиста, over 9000 проектов до сих пор хранят в VCS бинарники и просто имеют большой вес.

Ivan8209

>>> с hg-репозиторием можно работать как с папкой-проектом (например, записать на флешку).
>> Просто потрясающий своей красотой аргумент.
>> Ни разу не пробовал переписывать репозитории CVS/Subversion?
> в случае svn телодвижений заметно больше.

cp -R /path/to/svnroot /mnt/
cp -R /path/to/cvsroot /mnt/

Покажите мне разницу.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Ivan8209

>>>> папке
>>> щас тебя зачмырят!
>> А что такое файл?
> ответ "напильник" подойдет, или ты по делу говоришь?
По делу.
В целом, это правильный перевод, он сохраняет, при очевидных условиях,
целостность отображения понятий в предметы окружающего мира.
Перевод "каталог" можно считать устаревшим, поскольку новые поколения
могут и не увидеть каталога в его современном (_уже_ --- не очень современном)
понимании.
Называть это "директорией" лично я по ряду причин считаю вредным.
---
...Я работаю антинаучным аферистом...

Andbar

Покажите мне разницу.
вместо абстрактного /path/to/___root, который надо ещё помнить - вполне конкретный ~/myproject. Конечно, можно хранить всё рядом, но т.к. перемещение репозитория вызовет необходимость делать некие действия с рабочей копией, я бы предложил положить его подальше от домашней директории.
И, кстати, svn даже с локальным репозиторием работает заметно медленнее hg.

Ivan8209

> вместо абстрактного /path/to/___root, который надо ещё помнить
Зачем его помнить, если это ~/cvsroot?
> перемещение репозитория вызовет необходимость делать некие действия с рабочей копией,
Я когда-то давно написал этот скрипт в одну строчку и больше не парюсь.
> я бы предложил положить его подальше от домашней директории.
"Его" это репозиторий? У меня лежит прямо тут,
никаких комплексов по этому поводу я не испытываю.
И, кстати, если ты боишься класть репозиторий близко,
то почему ты не боишься использовать всякое hg, где репозиторий
совмещён с рабочей копией?
---
...Я работаю антинаучным аферистом...

Andbar

И, кстати, если ты боишься класть репозиторий близко,
то почему ты не боишься использовать всякое hg, где репозиторий
совмещён с рабочей копией?
С hg я могу наклонировать репозиториев столько, сколько захочу... Точнее, они могут ещё в качестве веток использоваться.

Ivan8209

> С hg я могу наклонировать репозиториев столько, сколько захочу...
> Точнее, они могут ещё в качестве веток использоваться.
Ну а я умею клонировать репозитории CVS.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Andbar

Ну а я умею клонировать репозитории CVS.
ну с CVS, видимо, вообще трудно работать из-за того, что она версионирует отдельные файлы, а не проект. Может, конечно, это вопрос привычки, но моей первой системой контроля версий был TFS, потом пришлось некоторое время пользоваться VSS и я был очень доволен, когда перелил всю историю в репозиторий SVN: VSS вообще трудно воспринималась из-за отсутствия понятия единого номера ревизии для всего проекта.

Ivan8209

> ну с CVS, видимо, вообще трудно работать из-за того,
> что она версионирует отдельные файлы, а не проект.
Это, мягко говоря, неправда.
Чаще наоборот: со всякими новомодными git и прочим "фоссилом"
трудно работать именно потому, что там трудно откатывать
изменения в отдельных модулях или файлах и получать при этом
более или менее разумные результаты.
Да! Когда доходит до общения с инженерами, то вообще начинается
весело: у них же нет понятия "версии" вообще! Они пишут что-то
нечитаемое и непроизносимое, причём называют это "номером."
Как-нибудь попроси инженера прочитать такой "номер" по радио.
Узнаешь про себя много нового.
Такое впечатление, что у программистов крыша совсем съехала,
и они переселились в какую-то иную реальность, где Брянск
и прочие аномалии.
---
"Мы диалектику учили не по Гегелю.
Бряцанием боёв она врывалась в стих..."

spitfire

нечитаемое и непроизносимое
git help tag

Ivan8209

>> нечитаемое и непроизносимое
> git help tag
Предлагается написать костыль, который будет при каждом коммите
приделывать номер версии a la Subversion?
Я-то напишу, только толку-то?
Этим надо при разработке было заниматься,
только это ведь думать надо уметь.
Вальтер Тихий, вот, умел.
---
"Унивеpситет pазвивает все способности, в том числе --- глупость."

spitfire

Увольте-сс, зачем при каждом. При каждом необходимом.

vall

git describe

Ivan8209

> Увольте-сс, зачем при каждом. При каждом необходимом.
То есть промежуточные версии нумеровать не надо?
---
...Я работаю антинаучным аферистом...

Ivan8209

Ну и как это поможет?
---
...Я работаю антинаучным аферистом...

spitfire

А для промежуточных и sha1 сойдёт. Любое достаточно непромежуточное можно и удостоить тэга, или ветки, по ситуации. Как душе угодно.

Ivan8209

> А для промежуточных и sha1 сойдёт.
Осталось только понять, как определять что промежуточное, а что нет,
ну и концептуальный вопрос: а зачем тогда вообще коммитить промежуточные
версии, не имеющие самостоятельного значения?
> Любое достаточно непромежуточное можно и удостоить тэга, или ветки, по ситуации.
> Как душе угодно.
Вообще-то, народ нумерует версии не просто так, а для того,
чтобы на них можно было по-человечески ссылаться.
То есть, чтобы не говорить "это было на чертеже ещё в том варианте
проекта, когда до узла коммутации ещё E1, но башню уже передвинули,"
а чтобы сказать, например, "в пятнадцатом варианте проекта."
И чтобы можно было просто сравнивать. Например, чтобы было очевидно,
что в прошивке 6.66 скорее всего меньше зла, чем в прошивке 6.13,
а прошивка 5.45 вообще относится к предыдущему проекту "железа."
Если ты предлагаешь хранить черновики, то тут сразу же возникает
разумный вопрос: если они более не имеют никакого значения, то
зачем их вообще хранить, а если они что-то значат, то почему у
них какая-то аномальная нумерация, на которую почти невозможно
сослаться?
---
"Унивеpситет pазвивает все способности, в том числе --- глупость."

spitfire

чтобы на них можно было по-человечески ссылаться
С чего и начинали. git tag существует в первую очередь для этого.

spitfire

почти невозможно
git help rev-parse

spitfire

зачем тогда вообще коммитить промежуточные
версии, не имеющие самостоятельного значения?
Save early, save often ;]

Ivan8209

>> чтобы на них можно было по-человечески ссылаться
> С чего и начинали. git tag существует в первую очередь для этого.
Начали с того, что это должно быть сразу и по умолчанию,
а не требовать отдельных телодвижений. Даже в SCCS это есть.
---
"Унивеpситет pазвивает все способности, в том числе --- глупость."

Ivan8209

>> почти невозможно
> git help rev-parse
Да-а, тяжёлый случай.
Ты сколько в настоящих долгих проектах проработал?
Вот именно это и называется "почти невозможно:" оно возможно
только в некоторых специально созданных условиях.
Ты никогда ничего на тестирование не отправлял? Всегда метишь?
А вот некоторые умудряются не пометить. По разным причинам:
из-за спешки, из-за халатности, из-за лени,--- не важно.
Объясни, как какой-нибудь инженер, у которого есть только
ноутбук с виндой, рабочей документацей и терминальной программой,
должен определить, что же за прошивка в приборе перед ним?
Связываться с программистом чёрт знает где, чтобы он эту SHA1 "пробил?"
Представь, что у него из работающих средств связи есть только
радиостанция для связи с ещё одним таким же инженером.
Представь, что все программисты сейчас отсыпаются по поводу субботы,
разбежались по любовницам, семьям, дачам и проч.
Или ты думаешь, что в жизни всё всегда ровно и гладко?
---
"Narrowness of experience leads to narrowness of imagination."

Ivan8209

>> зачем тогда вообще коммитить промежуточные
>> версии, не имеющие самостоятельного значения?
> Save early, save often ;]
"Save" /= "commit."
Можно и по поводу идиотского подхода "commit often" поспорить:
если ты постоянно коммитишь всякую пургу, которая ломает даже сборку,
то как ты ищешь, которая из версий наконец-то соберётся?
Линейным поиском в обе стороны? Или ты как-то постоянно вручную(!)
метишь те версии, которые собираются?
---
"Narrowness of experience leads to narrowness of imagination."

spitfire

Разумеется, нет. в действительности всё не так, как на самом деле. Лично моя действительность такова, что в ней нету инженеров с радиостанциями и прошивок с ревизиями, но есть различные ситуации, в которых именно git максимизирует локальное счастье. И я вопреки ожиданиям вовсе не стремлюсь утверждать единственную верность и правильность.

SPARTAK3959

На смену svn идет... svn 1.7! Все .svn папки планируют заменить одним файлом с sqlite базой данных, что должно значительно его ускорить и позволить добавить такие давно ожидаемые фичи, как rename tracking.

Filan

На смену svn идет... svn 1.7! Все .svn папки планируют заменить одним файлом с sqlite базой данных, что должно значительно его ускорить и позволить добавить такие давно ожидаемые фичи, как rename tracking.
А вот это уже интересно.

saveliev_a

Бальзам на душу просто.

VendettA

  А под виндой локально что поднять ?

Andbar

А под виндой локально что поднять для вордовских файлов ?
довольно легко, есть Visual SVN Server. Но какой в этом смысл без поддержки со стороны ворда?

doublemother

А под виндой локально что поднять для вордовских файлов ?
У нтфс же кажется (могу врать) искаропке сейчас есть версионирование?
В любом случае, какой-нибудь шарепоинт как раз умеет версионировать доки.

VendettA


довольно легко, есть Visual SVN Server.
ШареПоинт хранилище на локальном компе можно поднять ?

doublemother

Если у тебя серверная версия винды и достаточно памяти :)

stat6535144

Зависит от того, что тебе нужно.
я предпочитаю Bazaar (на нём launchpad работает) или в крайнем случае Mercural
Git не предназначен для проектов с большим числом разработчиков, увы :)

Andbar

У нтфс же кажется (могу врать) искаропке сейчас есть версионирование?
в UI это только в 7ке заметно

saveliev_a

Под виндой тот же SVN, а в качестве клиента использовать Tortoise SVN, который для сравнения документов вызывает тот же ворд, который умеет сравнивать.

sergey_m

Git не предназначен для проектов с большим числом разработчиков, увы :)
А это можно как-то проаргументировать?

VendettA



Под виндой тот же SVN, а в качестве клиента использовать Tortoise SVN, который для сравнения документов вызывает тот же ворд, который умеет сравнивать.
На Win Xp prof работать будет с 2003 -им Вордом ?

saveliev_a

Поставь и посмотри. Делов-то на 15 минут.

saveliev_a

Да, отпишись потом, пожалуйста, чтобы знать, работает ли.
Оставить комментарий
Имя или ник:
Комментарий: