2012-02-10 3 views
0

Я работаю над улучшением своего рабочего процесса в Linux, и сегодня я смотрю на управление версиями, на Windows у меня есть черепахаSVN, которая обеспечивает достаточную функциональность для меня, но в Linux я до сих пор получаю используя команды командной строки. Это хорошо, но, очевидно, наличие графического интерфейса для отображения вещей поможет повысить производительность. Я обнаружил, что начинаю полагаться на веб-интерфейс, предоставляемый хостом моего репозитория, для просмотра сведений об истории. Я получил работу Subclipse, так как мне очень нравится Eclipse CDT, поэтому я думаю, что это инструмент, который я буду использовать с этого момента.Подзаголовок и общее использование браузера SVN

Теперь то, что не помогает производительности, - это 1-2-секундное ожидание всякий раз, когда я нажимаю на что-либо в Subclipse. Очевидно, что каждый раз он обращается к удаленному репозиторию.

Есть ли способ установить систему так, чтобы она могла мгновенно загрузить статистику, связанную с каждым файлом? Мне очень хотелось бы быстро сканировать папку, это помогает мне сохранить «большую картину» в моем сознании, но я, конечно, не буду делать этого, если это займет столько же времени, сколько и сейчас.

Несомненно, если бы я создал клон репозитория на моем локальном компьютере, я мог бы получить мгновенное время доступа к данным. Бонус этого заключается в том, что я увижу приятную скорость при просмотре журналов TortoiseSVN в Windows, если я сделаю свое репо доступным для обеих ОС в разделе NTFS.

Таким образом, мне нужно будет иметь возможность клонировать репозиторий на моем локальном диске всякий раз, когда происходят какие-либо изменения. Как я могу автоматизировать это?

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

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

Обновление: после небольшого копания, похоже, есть команда, более или менее предназначенная для выполнения именно того, что мне нужно, svnsync. Я действительно не хочу ничего прикручивать здесь, потому что у меня нет резервной копии моего репозитория, и я не настраивал его вручную, я использую бесплатную услугу Unfuddle, которая, кстати, была звездной.

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

Итак, мой реальный реальный вопрос: как я могу настроить этот тип синхронизации/зеркала репо? Я не хочу размещать локальное репо в сети или что-то еще, все, что я хочу, - это сообщить моему SVN-клиенту (Subclipse или TortoiseSVN) использовать это локальное репо для извлечения данных. Одна потенциальная ошибка заключается в том, что я не уверен, какой доступ я имею к базовому репозиторию для настройки синхронизации. Концептуально это должна быть операция только для чтения, но она должна как-то «нажимать» обновления, когда я совершаю изменения.

Update 2: Хорошо, я нашел helpful blog post, этот код дал мне дубликат репозиторий:

svnadmin create /tmp/localsvn 
echo '#!/bin/sh' > /tmp/localsvn/hooks/pre-revprop-change 
chmod +x /tmp/localsvn/hooks/pre-revprop-change 
svnsync init file:///tmp/localsvn https://your.unfuddle.com/svn/your_root 
svnsync sync file:///tmp/localsvn 

Я не ставил мину в /tmp/, но это очень просто.

Мой доступ к этому репо блестяще работает с Subclipse. Это довольно быстро.

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

Обновление 3: Хорошо, так что мне в основном нужно настроить post-commit и post-revprop-change крючки на сервере, чтобы вызвать svnsync для доступа к зеркалу. Это не могло быть сделано ни по-другому, и это имеет смысл ...

Я думаю, что я просто создам сценарий и назову его всякий раз, когда я хочу обновить свое местное репо.

+0

Вы должны иметь ** pre-revprop-change ** в зеркале, чтобы иметь чистое хранилище только для чтения (для * users *). И вместо того, чтобы перехватывать фиксацию на * зеркальном репозитории, вы можете использовать cron-job в репозитории * mirror * - стоимость всего лишь небольшая задержка синхронизации. –

+0

Ооо, это хорошая идея. –

ответ

0

Ответ на этот вопрос: git. Я был очень доволен этим.