Каковы преимущества git перед git-svn? - PullRequest
7 голосов
/ 18 февраля 2010

Преимущества использования git-svn перед git очевидны (совместимость svn), но каковы преимущества git перед git-svn?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2010

Это просто означает, что в вашей цепочке разработки (svn) у вас меньше на одну VCS.
В терминах администрирования:

  • у вас есть распределенные репозитории, управляемые Git, каждыйавтономные с их полной историей
  • вам не нужно поддерживать соединение с центральным репозиторием SVN.
  • вы можете организовывать резервные копии по-разному (отправлять данные в удаленное резервное хранилище или экспортировать их)ваш репозиторий Git через git bundle)

И, конечно, вы можете управлять всеми преимуществами Git по сравнению с SVN .

3 голосов
/ 16 июля 2012

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

  1. Push vs. dcommit.

    Зачем git-svn нужна эта отдельная команда dcommit?

    Поскольку хранилище Subversion ведет себя иначе, чем удаленное хранилище Git: SVN всегда пытается объединить входящие изменения на уровне каталогов. Если кто-то изменяет файл, который был изменен одновременно другим пользователем, SVN отклоняет входящие изменения с ошибкой устарела . В противном случае commit / dcommit проходит.

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

    В результате git-svn dcommit должен убедиться, что только что принятая версия совпадает с ожидаемой (некоторые каталоги могут быть автоматически объединены во время dcommit). Это означает, что git-svn всегда извлекает / возвращает обратно только что отправленные изменения в репозиторий SVN.

  2. Файл игнорируется.

    Когда кто-то игнорирует определенные файлы в рабочем дереве и фиксирует эту модификацию, нет способа отправить эту модификацию с git-svn dcommit. Таким образом, нет возможности поделиться игнорированием с другими пользователями репозитория SVN.

  3. Атрибуты Git.

    И Subversion, и Git имеют определенные метаданные, связанные с файлами и каталогами. Как и .gitignore, нет возможности поделиться .gitattributes с коллегами.

  4. Слияние совершается.

    Наконец, когда кто-то пытается dcommit сделать коммит слияния, есть вероятность, что определенные коммиты вообще не будут отправляться в репозиторий SVN. Это происходит, когда все коммиты объединенной ветви еще не были переданы в репозиторий SVN.

Большинство из этих git-svn проблем трудно или даже невозможно исправить. Вы можете рассмотреть SubGit - альтернативу git-svn на стороне сервера, которая исправляет большинство из них.

Подробнее см. Документация SubGit и Сравнение SubGit с git-svn .

...