Я могу использовать Подвижный локально и обновить от/продвигать в репозиторий Подверсии?

Как фрилансер, я часто работаю в компаниях, которые используют репозитории Подверсии.

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

Это работает? Вы прочитали какие-либо хорошие учебные руководства на специфических особенностях?

9
задан Michael Hackner 23 March 2010 в 16:56
поделиться

3 ответа

Попробуйте HgSubversion . Это позволяет вам делать именно это. Вы можете клонировать (часть) репозитория svn локально в репозиторий hg и работать с hg локально и svn удаленно (push и pull делают то, что вы от них ожидаете).

Раньше я использовал его с некоторым успехом, но у меня нет большого опыта работы с ним.

5
ответ дан 4 December 2019 в 13:46
поделиться

Я работаю в компании, использующей CVS, поэтому HgSubversion не подходил. У меня был тот же вопрос несколько дней назад, и я разработал рабочий процесс, основанный на этом:

http://momentaryfascinations.com/programming/how.to.use.mercurial.for.local.source.code.management.with. a.public.subversion.server.html

Я создал репозиторий Mercurial, где находится мой репозиторий CVS, который я считаю "только для чтения". Затем я клонирую это репозиторий hg "только для чтения" в рабочие репозитории, где я вношу изменения / исправления локально. Я клонировал репо для каждой функции и исправления, которые я делаю, но вы также можете иметь только одно репо и использовать другую стратегию ветвления для управления своим развитием. Вот хороший обзор таких стратегий.

Ключом к этому рабочему процессу является наличие репозитория «только для чтения». Раньше я вносил изменения в первый созданный мной репозиторий Mercurial, который был поверх CVS. Это сработало, но при обновлении из CVS возникло затруднение. Имея этот дополнительный уровень, вы можете иметь дело с внесением собственных изменений и обновлением из CVS отдельно.

Сохранение синхронизации с CVS

Каждый раз, когда в CVS происходят изменения, я делаю обновление cvs. В репозитории hg "только для чтения" это будет отображаться как измененные файлы. Чтобы синхронизировать Mercurial, я просто выполняю

hg ci -m "Updated from CVS."

(так что вы увидите много таких сообщений в моих журналах hg). На этом этапе мой репозиторий «только для чтения» синхронизирован с CVS. Теперь я могу перейти в любой из клонированных мной репозиториев и выполнить hg pull , а затем hg update , чтобы синхронизировать их.

Фиксация изменений из hg обратно в CVS

Идя в другом направлении, когда я хочу зафиксировать изменения в CVS, я захожу в один из моих рабочих репозиториев, где я уже зафиксировал свои изменения в hg. Затем я hg нажимаю свои изменения обратно в режим «только для чтения», перехожу в репозиторий «только для чтения», выполняю hg update . С точки зрения CVS, это будет выглядеть как недавно измененное. Затем я делаю cvs commit обратно в CVS. Здесь мне придется повторить / резюмировать в своем сообщении журнала работу, которую я проделал в моем репозитории hg.

По общему признанию, в этом рабочем процессе есть неровности. Вы можете вносить несколько изменений в hg, что в сумме составляет всего одно изменение в CVS / SVN, так что история не будет храниться в CVS / SVN, и вам придется суммировать свои сообщения о фиксации. Вы должны вручную управлять синхронизацией CVS и репозитория, доступного только для чтения. Преимущество этого заключается в том, что вам не нужно устанавливать никаких дополнительных расширений - вы просто имеете дело с самими файлами с обеих сторон. Все, что происходит, довольно прозрачно и под вашим контролем.

Я все еще режу зубы на hg, но пока этот рабочий процесс работает достаточно хорошо.

Харви предоставил прекрасную диаграмму этого и подчеркивает, что этот рабочий процесс применим к любой другой VCS:

alt text
(источник: sr105.com )

8
ответ дан 4 December 2019 в 13:46
поделиться

Вы можете найти некоторую информацию на этой вики-странице.

2
ответ дан 4 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: