Как я стараюсь не регистрироваться в локальных изменениях в репозитории SVN?

Необходимо синхронизироваться, но на определенной архитектуре существуют эффективные способы сделать это.

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

ядро Linux уже имеет часть этого кода.

7
задан Bill K 13 November 2009 в 22:42
поделиться

8 ответов

Какой клиент вы используете?

TortoiseSVN имеет отличную функцию, которая использует преимущества функции списка изменений , встроенной в SVN. Если вы щелкните правой кнопкой мыши измененную папку и выберите «Проверить наличие изменений», вы можете щелкнуть правой кнопкой мыши любой из измененных файлов в этом диалоговом окне и выбрать «Добавить в список изменений -> игнорировать при фиксации». С этого момента, когда вы выполняете фиксацию, Tortoise старается не добавлять эти файлы в фиксацию. См. «Исключение элементов из списка фиксации» на на этой странице .

Если вы не используете черепаху, вы можете настроить аналогичный список изменений вручную.

7
ответ дан 6 December 2019 в 19:38
поделиться

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

3
ответ дан 6 December 2019 в 19:38
поделиться

Обычно я стараюсь все устроить так, чтобы стандартные файлы, проверенные SVN, можно было переопределить отдельным файлом svn: ignore-ed

Например, у меня есть сценарий bash, который запускается веб-сервер Jetty с использованием файла конфигурации. Обычно это jetty.xml, но если в файловой системе присутствует jetty-local.xml, он используется вместо этого.

(Конечно, очевидная проблема заключается в том, что когда jetty.xml получает некоторые обновления, они не будут слито в jetty-local.xml, но это может быть меньшей проблемой, чем то, с чем вы уже столкнулись.)

В проекте PHP, над которым я работал, это было еще дальше с двумя отдельными деревьями кода - / system, в которой были извлечены все системные классы, и / local, который его зеркалировал, но был пустым, если не был добавлен локальный класс, и в этом случае он был загружен в предпочтении.

2
ответ дан 6 December 2019 в 19:38
поделиться

В подобной ситуации я добавляю файлы, которые не хочу регистрировать, в набор изменений с пометкой «НЕ ПРОВЕРЯТЬ». Затем мой клиент SVN ( SmartSVN , хотя Tortoise также поддерживает это) можно настроить так, чтобы он игнорировал этот набор изменений, что означает, что я случайно не проверяю эти изменения.

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

1
ответ дан 6 December 2019 в 19:38
поделиться

Я не могу придумать какой-либо простой способ сделать это. Нет ли возможности динамически проверять (в ваших файлах / скриптах), в какой среде вы находитесь, и вносить соответствующие настройки? Раньше я делал это в PHP с простой проверкой каталога (если рабочий каталог равен C: \ projects ... тогда укажите путь к ...)

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

0
ответ дан 6 December 2019 в 19:38
поделиться

Мне повезло, я использовал переключатель svn , чтобы персонализированные файлы не попадали в чужие конфигурации. Учитывая нормальный макет ствола / веток / тегов, сделайте себе папку в ветвях, содержащую ваш персональный файл конфигурации. Затем

svn switch URL-to-personalized-config URL-to-standard-config

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

0
ответ дан 6 December 2019 в 19:38
поделиться

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

web.deploy.config
web.dev.config

Все они будут находиться под контролем источника. Затем скопируйте один из этих файлов в web.config на сервере, на котором он работает (оставив этот файл вне системы контроля версий). У меня работает.

0
ответ дан 6 December 2019 в 19:38
поделиться

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

Если вы работаете на машине Unix / Linux с установленным tksvn w / tkdiff, вы можете проверить красивое графическое представление каждого различия по очереди с помощью этой команды:

for FILE in `svn status | grep -v ? | sed -n "s/^[MA]//p"`; do tkdiff $FILE; done

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

0
ответ дан 6 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

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