Я работаю над улучшением своего рабочего процесса в 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 для доступа к зеркалу. Это не могло быть сделано ни по-другому, и это имеет смысл ...
Я думаю, что я просто создам сценарий и назову его всякий раз, когда я хочу обновить свое местное репо.
Вы должны иметь ** pre-revprop-change ** в зеркале, чтобы иметь чистое хранилище только для чтения (для * users *). И вместо того, чтобы перехватывать фиксацию на * зеркальном репозитории, вы можете использовать cron-job в репозитории * mirror * - стоимость всего лишь небольшая задержка синхронизации. –
Ооо, это хорошая идея. –