SVN: Есть ли способ скопировать в филиал все последние версии файлов, совершенных под редакцией, но только из этих файлов?

Я прочитал всю «книгу SVN», но не смог найти то, что искал.

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

Поскольку с 1 репутацией я не могу опубликовать изображение, вот рисунок ASCII:



 Файлы: (A, B, C, E, R, Z)

      ZR
      БЫТЬ
      ACAC
   9 10 11 12 13
 -r - r --- r --- r --- r --- trunk
     \
      ----------------------- branch_test

 Редакция 10: добавлена ​​функция1 () в файл A
 Версия 12: добавлена ​​функция2 () в файл A 

Это версия изображения приведенного выше рисунка: http://s22.postimg.org/hkzsavb35/SVN_diagram.png

Я хотел бы скопировать ревизию 12 файлов R, E и A из trunk в branch_test. Как будто я хотел бы сделать снимок этих файлов на этом этапе, включая все их содержимое с предыдущих версий вплоть до этой даты. Но только из тех файлов, которые участвуют в этой ревизии.

  • Я не хочу только разницу с версией от 11 до 12. Потому что, если я добавил функцию1 () в файл А в r10 и функцию2 () в этот же файл А в r12, а я «вишневый выбор»:
     cd branchWorkingCopy
     svn merge -c 12 ^ / project / trunk

он будет загружать только разницу в рабочую копию, то есть функция copy () будет скопирована, но функция function1 () не будет присутствовать в ветке.

  • Я не хочу изменений для файла Z в редакции 10, ни изменений для файла C в версии 11. Я просто хочу, какой был «текущий» весь файл, когда r12 был совершен, но только из тех файлов, которые были задействованы в совершить. В этом примере я хочу, чтобы файлы R, E и A со всеми их изменениями были внесены с версии 9. Но я не хочу вручную выбирать файлы R, E и A.

Есть ли способ сделать это в svn? Кроме того, чтобы индивидуально получить все файлы и скопировать их последние версии «вручную» (на индивидуальной основе)?

PS: Каков прецедент? Иногда я готов / должен скопировать модификацию (12) в нашу тестовую ветку, но я еще не готов сделать это с предыдущей модификацией (r10), хотя мне нужны некоторые из обновленных файлов предыдущей модификации.

Во-первых, ответ на ваш прямой вопрос: вам понадобится «слияние вишни» с каждым отдельным файлом. Luckly svn merge может действовать как на отдельные файлы, так и на пути к каталогам.

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

Но, лучший вопрос: ПОЧЕМУ вы должны сначала взять только часть фиксации на свою ветку? Если вы используете SVN эффективно, то каждая фиксация будет содержать только связанные изменения, которые вы почти всегда хотите все вместе или вообще не хотите. Вы совершаете совокупность несвязанных изменений вместе? Если это так, вам следует подумать о том, чтобы изменить процесс разработки, а не работать вокруг него.