Git импорт / экспорт в SVN как обычный рабочий процесс? - PullRequest
2 голосов
/ 06 декабря 2009

Рэндал Шварц говорит , что он использует функцию импорта / экспорта SVN в Git, когда ему приходится взаимодействовать с репозиториями SVN. Он извлекает проект из SVN, выполняет все свои локальные изменения / сохранения с помощью Git, а затем, как только он завершается, возвращает изменения в хранилище SVN. Является ли это действительно полезным процессом для ежедневного использования с SVN-репозиториями, а не просто с использованием SVN? Особенно, если ваш конечный репозиторий должен быть SVN.

Ответы [ 6 ]

4 голосов
/ 06 декабря 2009

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

Это также дает вам возможность легко фиксировать изменения, не связанные с работой, которую вы в данный момент делаете (например, вы заметили несвязанную ошибку), как отдельный коммит. Вы делаете убедитесь, что каждый сделанный вами коммит содержит только связанных изменений, не так ли? Возможно, никакой другой VCS не делает это так просто, как git. Прошлый опыт работы с другими VCS показал, что разработчики обычно слишком ленивы и склонны совершать несвязанные изменения вместе ... что становится болезненным, если одно из изменений необходимо отменить. С мерзавцем ленивость сложнее оправдать. Вы даже можете проверить изменения по отдельности, прежде чем зафиксировать их, используя git stash --keep-index. Если вы использовали только SVN или что-то подобное, мощь и гибкость практически невообразимы.

Добавьте к этому все другие мерзавцы и свистки, такие как: перебазирование, git bisect (может быть настоящей находкой во время регрессионного тестирования / отладки), git send-email (для быстрого уведомления товарищей по команде о коммитах, с которыми вы собираетесь make), работа в автономном режиме, абсолютная скорость , git grep (для поиска файлов с контролем версий), git blame (вероятно, лучший инструмент "обвинения"), фактическая пригодная для использования слияние ветвей ... Я мог бы продолжать и продолжать.

Я и некоторые другие члены моей команды используем git-svn в качестве внешнего интерфейса для SVN по этим и другим причинам, и я не могу себе представить, что я делаю это иначе ... ну, разве что, возможно, я использую только git без любой SVN вообще: P

4 голосов
/ 06 декабря 2009

Это субъективный вопрос, но да, это абсолютно того стоит . Вы получите все преимущества Git, и вам не придется работать с Subversion локально.

В качестве крайнего примера, если вы используете Subversion локально и случайно удалили некоторые файлы, которые еще не зафиксировали (например, вы находитесь в самолете и не можете зафиксировать, например), вы просто потеряли все твои работы. На Git, потому что ваш репозиторий локальный, вы можете просто сделать

git ls-files -d | xargs git checkout --

Ша-бух! Ваши файлы восстановлены.

0 голосов
/ 06 декабря 2009

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

Я только что получил их, чтобы сделать git-репо для этих целей, поэтому я могу работать и вне офиса.

Плюс это лучше для задач по обвинению / пересмотру времени.

0 голосов
/ 06 декабря 2009

Именно так я и работаю с Subversion, потому что это дает мне большую гибкость и скорость. Мне нравится возможность создавать целую группу ветвей функций на моем локальном компьютере и объединять их обратно в транк, не загрязняя сервер.

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

0 голосов
/ 06 декабря 2009

Когда вы заперты в Subversion, git-svn полностью стоит того. Я думаю, что одна только функция тайника делает вещи совершенно замечательными. Более того, вы можете делиться со своими коллегами по работе с помощью Git и не иметь постоянной, и обычно медленной, если она удаленной, связи с сервером Subversion.

0 голосов
/ 06 декабря 2009

Абсолютно! Я использую Git в качестве клиента Subversion все время на работе (где нашим главным хранилищем является Subversion по другим причинам). Я получаю следующие преимущества:

  • легкое локальное разветвление
  • git add -p
  • git stash
  • способность делиться патчами или даже ветками с коллегами, которые также используют Git таким образом (до совершения Subversion)
  • полное хранилище с возможностью локального поиска (быстро!)
...