Intereting Posts
Рекомендации GIT Dev / Тестирование / производственная среда SVN Relocate – изменить все внешние ссылки на «относительный URL-адрес для корня репозитория» Subversion Клиентское приложение Комментарий к строке в Github без фиксации? Управление сервером GForge AS Работа в автономном режиме с помощью SVN (один способ общения через USB-накопитель) Подключитесь к внешнему репозиторию subversion через mac и host, проект xcode Как я могу активировать subversion для регистрации и фиксации файла? Неопубликованный файл с фиксацией в PR Git Статус: фатальный: файл index open failed failed: недопустимый аргумент в cmd.exe Кто-нибудь имеет Windows SVNServe для аутентификации AD / Kerberos через SASL / GSSAPI? Рабочий процесс развертывания Subversion для веб-разработки fatal: Не удалось открыть файл .git / rebase-merge / done для чтения: нет такого файла или каталога Как я могу использовать функции SVN в PHP? SVN – Как я могу получать только обновленные файлы с сервера, но не совершать какие-либо локальные изменения, которые я сделал?

Subversion: проверять только те файлы, которые были затронуты во время конкретной фиксации

В Subversion можно проверить только те файлы, которые были затронуты во время конкретной фиксации, если вы знаете конкретный номер ревизии?

Solutions Collecting From Web of "Subversion: проверять только те файлы, которые были затронуты во время конкретной фиксации"

Я думаю, что проверка Subversion может проверять только определенную папку, а не отдельные файлы. Тем не менее, команда:

svn log -r *revision* -q -v 

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

вы можете получить список файлов, измененных с момента следующей ревизии:

 svn diff -r [REVNUM]:HEAD --summarize > fileschanged.txt 

затем создайте скрипт для проверки каждого файла в файле fileschanged.txt

Я думаю, что вы можете использовать термин «проверить» здесь в своем смысле CVS, то есть «обновление svn». Это правильно?

Если это так, то вы можете обновить требуемую версию:

 svn update -r12345 

или даже просто файлы для этой версии:

 svn update -r12345 file1 file2 file3 

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

Я знаю, что это немного offtopic, но я использую TRAC для этого, и он экспортирует только файлы, измененные между двумя версиями, как zip-архив с файлами в их исходной структуре каталогов.

svn checkout работает только на уровне каталогов, а не на уровне файлов. Конечно, если все изменения в конкретном наборе изменений были из одного и того же каталога, вы можете выполнить svn checkout <url> <path> -r<revid> .

Вы можете проверить список затронутых файлов, используя svn log -q -v -r123 url .

Если вы действительно хотите получить только те файлы, которые вы можете использовать svn cat urlToFile -r123 > myfile для каждого файла.

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

после получения списка файлов для выбора,

 svn co --depth=empty url dest cd dest svn up file1 file2 file3 

Изменить: почти то же решение, что и принятый ответ здесь: Оформить заказ одного файла из Subversion

Вот один из способов сделать это.

svn co –depth empty svn: // myrepository / mytrunk

cd mytrunk

svn diff -c [REVNUM] svn: // myrepository / mytrunk | grep "Index:" | awk '{print $ 2}' | xargs -n 1 svn update –parents

Выход из однострочного файла awk – это список файлов, измененных с помощью относительных путей. Как упоминалось ранее, обновление работает над отдельными файлами, а проверка работает над модулями. Параметр «–parents» заставляет создавать каталоги в вашей рабочей копии по мере необходимости.

Обратите внимание, что обновление также имеет параметр «-changelist» (по крайней мере, в v.1.7.1 +), но, похоже, он не делал то, что я хотел.

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

Создайте diff, который отобразит нужные вам файлы и запишет их в текстовый файл.

 svn diff --summarize -r219:232 > r219-232_Summary.txt 

Это даст вам текстовый файл с такими строками, как

 M path/to/file.php 

Перемещайте формат файла, чтобы заменить начало каждой строки командой «svn up» вместо «A» или «M» или что-то еще.

  sed -i 's/A /svn up /g' ./r219-232_Summary.txt 

… который даст вам строки, подобные

 svn up path/to/file.php 

Создайте новый каталог и посмотрите свой проект на него.

 svn co http://www.repo.net/whatever 

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

 rm -rf ./* 

Скопируйте в свой текстовый файл, сделайте его исполняемым и запустите его как скрипт.

 cp /path/to/wherever/r219-232_Summary.txt ./r219-232_Summary.sh chmod 777 ./r219-232_Summary.sh ./r219-232_Summary.sh 

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

Вот простая версия скрипта bash. Я использовал «шаблон поиска» для удаления ненужных строк. Версия, адрес репозитория и путь назначения указываются как аргументы, но могут быть жестко запрограммированы.

 #!/bin/bash REVISION=${1} REPOSITORY="${2}" DEST_PATH="${3}" SEARCH_PATTERN="trunk" FILES=$(svn log -q -v $REPOSITORY -r $REVISION | grep $SEARCH_PATTERN) mkdir -p $DEST_PATH for FILE in $FILES ; do if [[ $FILE == *"$SEARCH_PATTERN"* ]] then FOLDER=$(dirname $FILE) mkdir -p $DEST_PATH/$FOLDER svn export -r $REVISION $REPOSITORY/$FILE $DEST_PATH/$FOLDER fi done #EOF 

Вы можете получить только список файлов в конкретном изменении, используя

svn log -v -q -r rev

Затем вы можете очистить маркеры на передней части линии трубкой

sed -e "s/^ . / /" | egrep -v "Changed paths:|-----"

, Чтобы получить только файлы, вы, вероятно, использовали бы svn cat как предложил Николай.

[отредактировано для очистки и упрощения конвейера sed.]

Извините, что воскресил давно мертвый вопрос, но мне никогда не отвечали на мое удовлетворение.

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

Это не экспорт, а проверка, но я уверен, что это будет простое изменение.

svn mergeinfo –show-revs соответствует http: //base.com.rev1 http: //base.com.rev2

Это даст много изменений

Теперь вы хотели бы просмотреть список файлов в каждой ревизии. Поэтому возьмите список ревизий и скопируйте их в блокнот или editplus и измените так, чтобы они вписывались в одну строку

svn log -r r33521 -r33762 -3456 -r5623 -q -v >> missedFiles.txt

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