Subversion + некоторые другие VCS (Git, Hg и т. Д.) В той же рабочей копии - PullRequest
3 голосов
/ 17 ноября 2009

Вот сделка: Я только начал новую работу, и контроль источников здесь в основном бесполезен. Все разработчики (около 10 человек) тестируют свой код на одном и том же сайте разработчиков, и нет никакого способа протестировать изменение, кроме как зафиксировать изменение в SVN, а затем оно автоматически обновляется на сайте разработчика. (Давайте даже не будем говорить о головных болях, когда кто-то что-то ломает, и вам нужно понять, почему ваши вещи теперь не работают ....)

Так что вместо того, чтобы делать как Ctrl + S и обновлять браузер, чтобы увидеть мои изменения, вы должны Ctrl + S, svn commit, обновить страницу. Конечно, поскольку каждый должен делать это миллион раз в день, сообщений о коммитах никогда не бывает, поэтому история SVN бесполезна.

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

Можно ли использовать, например, mercurial одновременно с svn? Я бы использовал SVN в основном, чтобы увидеть свои изменения, и Mercurial, чтобы отслеживать мои изменения.

Любые альтернативные идеи тоже приветствуются. Спасибо!

update-

Спасибо за все ответы. К сожалению, никто не подходит мне в этой ситуации. Возможно я не объяснил это правильно. Я не хочу синхронизировать репо. Что мне нужно, так это чтобы у меня было два разных хранилища в одном и том же месте. Так что, если я сделаю svn status, я сравниваю с обычным репо компании. Но если я делаю hg status, я сравниваю со своим личным репо, чтобы помочь мне оставаться в здравом уме. Спасибо ребята

Ответы [ 6 ]

4 голосов
/ 17 ноября 2009

Для Mercurial Stack Overflow имеется руководство , в котором подробно описывается Выбор взаимодействия Subversion . Существует три текущих метода: hg convert, hgsubversion и hgsvn. Подробности см. В руководстве.

(Мои два цента в том, что hgsubversion не обрабатывает все репозитории должным образом, но, когда это происходит, обрабатывает их очень гладко. Когда этого не происходит, у меня был некоторый успех с hgsvn.)

UPDATE:

Вы сказали:

"Спасибо за все ответы. К сожалению, ни один из них не подходит мне в этой ситуации. Может быть, я не объяснил это правильно. Я не хочу синхронизировать репозитории. Мне нужно иметь возможность иметь два разных проверки хранилища в одном и том же месте. Поэтому, если я делаю статус svn, я сравниваю с обычным репо компании. Но если я делаю статус hg, я сравниваю со своим личным репо, чтобы помочь мне оставаться в здравом уме. "

Ах, понятно. Проще говоря, да. но вы, вероятно, не хотите. Вы можете оформить заказ из Subversion, вручную скопировать каталог .hg из дерева Mercurial и запустить команды для каждого из них. Вы почти наверняка захотите svn ignore .hg* файлов и добавить **.svn к своему .hgignore. Но вы на самом деле не хотите этого делать, если вы не редактируете оформление заказа, за исключением случаев svn update или hg pull из оригинальных репозиториев. Если вы также вносите изменения, вы совершите ошибку и вы получите что-то, зарегистрированное в том или ином хранилище, которое вам там не нужно.

Если я вас правильно понял, вы бы все же выиграли бы от использования одного из мостов Mercurial-Subversion. Например, вы можете довольно просто с помощью hgsubversion do hg status сравнить с вашим локальным репозиторием Mercurial и hg svn status сравнить с удаленным репозиторием Subversion. Даже если вы не синхронизируете и просто сравниваете свои файлы с одним хранилищем и другим, гораздо лучше иметь систему, которая понимает и то, и другое, и не будет перетекать нежелательное состояние из одной VCS в другую.

3 голосов
/ 17 ноября 2009

GIT SVN ваш друг.

git svn clone repository_url
# edit 
git commit
# edit 
git commit
# send all your changes to remote svn
git svn dcommit
2 голосов
/ 17 ноября 2009

Расширение hgsubversion для mercurial позволяет вам использовать mercurial в качестве svn-клиента так же, как это делает git svn.

hg clone svn+http://python-nose.googlecode.com/svn nose-hg

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

2 голосов
/ 17 ноября 2009

Вы могли бы использовать git, bazaar или mercurial вдоль svn, хотя вы хотели бы быть уверены, что исключили каталоги .svn из вашей новой scm, и наоборот, чтобы они не отслеживали метаданные друг друга.

Что касается поддержки IDE, я знаю, что Eclipse позволит вам иметь только один активный источник контроля за раз. Я не уверен насчет NetBeans или IntelliJ. В этом случае вы можете настроить IDE для управления svn и выполнять свои действия из командной строки.

Другой вариант, который вы могли бы рассмотреть, - это ветвление с помощью svn ... не могли бы вы работать из ветки локально, а затем при необходимости объединиться с общей магистралью? Это может просто причинить больше боли.

Удачи и сожаления о вашей ситуации.

0 голосов
/ 07 января 2010

Вы можете использовать несколько VCS в одной рабочей копии. Я протестировал и базар, и git в одной рабочей копии, которая фактически отслеживалась с помощью SVN (мой тогдашний основной VCS). Итак, у меня там были каталоги .svn, .bzr и .git. Не беда, вообще. Конечно, нужны умные настройки игнорирования.

0 голосов
/ 17 ноября 2009

Вы можете использовать git локально, чтобы управлять своими изменениями, а затем использовать git-svn, чтобы вытащить / отправить эти изменения в SVN. http://flavio.castelli.name/howto_use_git_with_svn

...