Ответы пользователя по тегу Subversion
  • Какую стратегию использования SVN выбрать для небольшой команды?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Посадить сборку на pre-commit-hook? Будет выполняться каждый раз на сервере, без успешной сборки коммит отклонять. Хотя будет медленно, подозреваю. Весь смысл SVN теряется.

    Согласен с концепцией маленьких атомарных коммитов из комментария pi314. Но для этого надо отвязать сборку от коммита, что можно только в распределенной VCS. Сам в одиночку использую SVN, Git нахожу переусложненным и тяжелым. Поглядываю в сторону Fossil, в деле пока не пробовал.
    Ответ написан
  • Как настроить SSL для subversion?

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

    Начать надо с того, что поместить репозиторий в нужное место простым копированием или развернуть из дампа или командами svnadmin create и svnadmin load. Дамп внешнего хранилища можно снять командой svnrdump.

    В созданном хранилище нужно настроить права или хотя бы проверить conf-файл хранилища. После этого можно настраивать Apache или поднимать выделенный сервер Subversion, работающий по протоколу svn://. Я использую второй вариант, поэтому по Apache не подскажу.

    WebSVN может работать через прямой доступ к хранилищу или как обычный клиент, то есть через svn:// или https://. Это настраивается правкой его include/config.php, где куча примеров и объяснений в комментариях.
    Ответ написан
  • Чем SVN лучше Git?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    SVN лучше Git тем, что не пытается превратить твою Винду в Юникс и не тащит за собой кучу мусо... э-э-э, зависимостей, которые проистекают от нежелания разработчиков Git договориться и написать всё на одном языке... или не на одном, но компилируемых, чтобы потом собрать объектный код в исполнимые модули.

    Поэтому SVN -- это 5 метров EXE/DLL самого SVN, а Git -- 200 (400?) метров, включающих в себя MSYS, Cygwin и Perl помимо самого Git. Для кого размер не аргумент -- есть понятие сложности владения: в большой и сложной системе больше точек, где что-то может сломаться.

    Насчет поколений и распределенности никто не спорит. Просто так сложилось, что к моменту появления распределенных VCS несистемные программисты перестали писать на компилируемых языках... В смысле однородности Mercurial лучше, но Python медленный, зараза!
    Ответ написан
  • Как организовать хранение библиотек и хидеров от которых зависит наш проект?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    И чтобы хранилась история, чтобы мы могли взять версию своей библиотеки за прошлый год и быстро ее собрать со всеми зависимостями. Сейчас используем сетевую папку просто.

    В SVN есть такая штука, как svn:externals. В Git и Мercurial тоже наверняка есть, а вот в CVS вряд ли.

    Суть в том, что в вашем хранилище хранится ссылка на другое (внешнее) хранилище, и при развертывании рабочей копии клиент ходит по этим "символическим ссылкам" и рекурсивно по ним всё скачивает. В SVN подчиненные рабочие копии будут выглядеть как обычные, у них будет своя папка .svn.

    Нужно только, чтобы внешнее хранилище было такого же типа, как и ваше. Скажем, SVN не сможет скачать из внешнего Git. Если вы качаете библиотеки не из хранилищ, а просто архив с сайта, заведите у себя отдельное хранилище для библиотек и складывайте туда все нужные версии.
    Ответ написан
  • SVN как настроить чтобы не вводить пароль?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Пользую RapidSVN, об особенностях TortoiseSVN не знаком. За подключение и пароли отвечает базовый клиент SVN. Если всё правильно, он должен сохранить предпочитаемые реквизиты в %AppData%\Subversion. Возможно, там в config нужно включить соответствующую настройку, вроде store-auth-creds = yes. Рабочие настройки у меня дома...

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

    На сервере нужно сделать свою рабочую копию в DocumentRoot (svn co), потом коммитить обычным порядком в основное хранилище, а на сервере делать svn up для получения изменений в DocumentRoot.
    Ответ написан
  • Почему возникает ошибка svnlook: E000022: Can't convert string from 'UTF-8' to native encoding: при коммите svn?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    А какая кодировка установлена на сервере в качестве этой самой native encoding? Из лога видно, что добавляется файл с русскими буквами в имени, причем это именно UTF-8, по кодам читается пример.txt.
    Ответ написан
  • Как узнать какие файлы будут обновлены командой svn up?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    svn status -u
    Для файлов, ожидающих обновления, в девятой (последней) колонке атрибутов будет стоять звездочка. Актуально для SVN 1.9, вероятно также для 1.8, про более ранние версии не скажу.
    Ответ написан
  • Оправдан ли в 2015 переход с git на svn?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Как активный пользователь SVN не вижу аргументов начинать новый проект на SVN в 2015-м году, если только нет идеологических причин. Тем более, раз у вас Git уже освоен и всем устраивает.
    Ответ написан
  • Почему после svn switch некоторые файлы отличаются?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Файлы текстовые? Теоретически отличия могут быть, если используются свойства вроде svn:eol-style или автозамена номера ревизии в теле файла.
    Ответ написан
  • Зачем удалять dev ветку из svn?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Гонит ваш PhpStorm. Во-первых, он не предлагает ничего удалять. Просто пишет, что после интеграции изменений в trunk нельзя будет просто так забирать изменения из trunk обратно в develop, и нельзя будет объединить изменения повторно.

    Мне кажется, что оба ограничения, возможно, были актуальны для SVN 1.6 и ранее, а в SVN 1.8 и 1.9 всё должно быть работоспособно даже с перекрестными слияниями. Сколько читал официальную доку SVN, такого ограничения не видел.
    Ответ написан
  • Как правильно создать ветку в svn?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Каталог не надо было создавать. Делать можно через svn copy или даже svnmucc cp, без создания рабочей копии.
    svn copy ^/trunk ^/branches/mybranch
    С svnmucc сходу пример не напишу. С SVN 1.7, если не путаю, при указании пути можно использовать символ ^ для обозначения корня репозитария вместо полного URL.

    После создания ветки ничего автоматически сливаться не будет, нужно каждый раз вручную делать.
    Ответ написан
  • Как создать зеркальный svn-репозиторий?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Прочитайте в справке про svnsync. Сразу учтите, что в синхронизируемый репозитарий сможет писать только svnsync, а пользователи смогут оттуда только читать, если вдруг. SVN -- всё же не распределенная VCS.
    Ответ написан
  • Как можно синхронизировать два SVN репозитория одинаковых проектов?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    Я вижу два решения.

    Первый вариант -- завести мета-репозитарий, в котором ссылки на обе части хранятся в свойстве svn:external. При каждом обновлении из мета-репозитария он будет делать вложенный запрос на обновление соответствующей части. Фиксировать изменения, естественно, придется в репозитарий своей части, а качать обновления для сборки -- из мета-репозитария.

    Этот способ требует онлайн-доступности обоих частей, иначе обновление по svn:external будет зависать до истечения таймаута.

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

    Если же частичное зеркалирование невозможно или работает не так, как вам хочется, при помощи svnsync можно расширить первый способ: в обоих филиалах завести полное зеркало и svn:external натравить уже на него. Тогда онлайн-доступность не потребуется, можно будет синхронизироваться как удобно. Издержки с "пишем в одно место" -- "качаем для сборки из другого" останутся.
    Ответ написан
  • SVN. Как принять изменения на сервере?

    Vapaamies
    @Vapaamies
    В творческом кризисе
    На сервере нужно тоже сделать svn co, после чего задать корень сайта в нужный каталог внутри локальной копии проекта. Так сайт будет находиться под управлением SVN как локальная копия. После этого обновление можно будет делать комадной svn up. Обновления БД, если требуются, придется накатывать как-то отдельно.
    Ответ написан