2010-03-04 3 views
4

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

Есть ли способ отметить некоторые файлы/папки, которые не должны сливаться в ветви каждый раз, когда я выполняю такую ​​операцию?

+0

Возможный дубликат [Как игнорировать папку во время слияния с субверсией] (http://stackoverflow.com/questions/1559552/как игнорируемые-папку-во-диверсионной-слияния) –

ответ

2

Существует вариант, который вы объедините, фактически означая, что слияние не изменяет файлы в целевом объекте, а помечает его в реквизитах отслеживания слияния. Таким образом, изменения никогда не будут возникать в файлах, которые будут объединены, когда-либо!

Эта функция называется только запись в версии командной строки.

От link text

--record только опция работает с -r и делает именно то, что вы думаете, что делает: он знаменует собой пересмотр в слиты (или неслитая, если используется «-» номер версии синтаксис отрицания), не изменяя ничего, кроме mergeinfo. Например, это было бы полезно, когда кто-то редактировал файл вручную таким образом, чтобы эффективно включать изменения, которые уже были сделаны где-то в другом месте. Вместо того, чтобы первоначальное изменение было перенесено в следующем слиянии синхронизации, тем самым рискуя текстовыми конфликтами везде, где две версии тривиально отличаются, вы можете просто записать изменение как уже объединенное. (Подробнее см. Требования к отслеживанию слияния и Блокировка изменений в книге Subversion.)

2

Я не сразу вижу решение, но было бы достаточно просто что-то придумать. То, что я вам даю, не проверяется.

Сначала вы должны составить список каталогов, которые вы хотели бы исключить. Вызывается ~/.svn-слияния-исключает

#regexes to exclude 
./helpfiles/ 
./deploy_scripts/ 
./models/customer_integration 

Тогда можно было бы написать еще один сценарий, чтобы вернуть эти каталоги в отрасли после слияния с turnk в них.

#/usr/bin/bash 
# I am assuming that you made the excludes based on the root directory 
# so that relative paths will work 
for dir in $(cat ~/.svn-merge-excludes) ; do 
    svn revert -R $dir 
done 

Это должно сработать. Большим преимуществом здесь является опция «-R» в возвращении, действующая рекурсивно в каталог. Поэтому ваш рабочий процесс будет выглядеть примерно так.

# cd path/to/branch 
# svn merge -r123:245 svn://svnserver.com/svn/trunk 
# revert_excludes_from_branch.sh 

Затем вы будете обрабатывать конфликты, а затем совершать. Если вы используете окна, тогда будет работать командный файл, вы можете просто набирать команды повтора последовательно.

Смежные вопросы