Я работаю над улучшением моего рабочего процесса в Linux, и сегодня я смотрю на контроль версий, в Windows у меня есть tortoiseSVN, который предоставляет мне достаточно функциональности, но в Linux я до сих пор добивался использования команд командной строки , Это нормально, но очевидно, что наличие графического интерфейса для отображения вещей поможет продуктивности. Я обнаружил, что начинаю полагаться на веб-интерфейс, предоставленный моим хостом хранилища, для просмотра подробностей истории. У меня работает Subclipse, так как мне очень нравится Eclipse CDT, так что я думаю, что это инструмент, который я буду использовать с этого момента.
Теперь, что не помогает производительности - это ожидание 1-2 секунды, когда я нажимаю на что-либо в Subclipse. Очевидно, что каждый раз он обращается к удаленному хранилищу.
Есть ли способ настроить систему, чтобы она могла мгновенно загрузить статистику, связанную с каждым файлом? Мне бы очень хотелось, чтобы можно было быстро сканировать папку, это помогает мне сохранять «большую картину» свежим в моей памяти, но я, конечно, не собираюсь делать это, если это займет столько времени, сколько сейчас.
Конечно, если я создал клон репозитория на своей локальной машине, я смогу получить почти мгновенное время доступа к данным. Бонусом этого является то, что я замечу приятное ускорение при просмотре журналов TortoiseSVN и в Windows, при условии, что я сделаю свое хранилище доступным для обеих ОС, например, для раздела NTFS.
Так что мне нужно будет иметь возможность клонировать репозиторий на мой локальный диск всякий раз, когда какие-либо изменения фиксируются. Как я могу автоматизировать это?
Я предполагаю, что копия извлечения SVN не содержит всех данных хранилища, к которым имеют доступ эти браузеры, поэтому мне бесполезно искать вариант связывания с извлеченной локальной копией: Например, в нем не будет данных для отображения аннотированного файла, локальная извлеченная копия содержит только сам файл (с любой ревизией, которую я указал во время извлечения), и любые метаданные, содержащиеся в каталогах .svn.
Пожалуйста, поправьте меня, если я ошибаюсь. Я собрал все эти выводы из опыта использования программного обеспечения, а не чтения фактической документации (что я хотел бы сделать, но на самом деле не могу тратить время на это).
Обновление: после небольшого копания похоже, что есть команда, более или менее предназначенная для выполнения именно того, что мне нужно, svnsync
. Я действительно не хочу ничего портить здесь, потому что у меня нет резервной копии моего репозитория, и я не настраивал его вручную, я использую бесплатный сервис Unfuddle , который был звездным , Кстати.
Однако после настройки зеркала и автоматической синхронизации при обновлении оно будет функционировать как кэш-память и как резервная копия. Это было бы очень удобно. Интересно, смогу ли я оформить заказ напрямую из зеркала репозитория, доступного только для чтения? Это имело бы смысл. Я просто не смог бы внести изменения в него.
Так что мой настоящий вопрос в том, как я могу настроить этот тип синхронизации / зеркала репо? Я не собираюсь размещать локальное репо в сети или что-то в этом роде, все, что я хочу, - это иметь возможность указать моему клиенту SVN (Subclipse или TortoiseSVN) использовать это локальное репо для извлечения данных. Одна потенциальная ошибка заключается в том, что я не уверен, какой у меня есть доступ к моему базовому репозиторию для настройки синхронизации. Концептуально это должна быть операция только для чтения, но она должна каким-то образом «подталкивать» обновления, когда я фиксирую изменения.
Обновление 2: Хорошо, я нашел полезное сообщение в блоге , этот код дал мне дубликат репо:
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 для доступа к зеркалу.Это не может быть сделано любым другим способом, и это имеет смысл ...
Я думаю, что я просто закончу делать сценарий и буду вызывать его всякий раз, когда захочу обновить локальное репо.