2012-12-03 2 views
2

У меня есть папка, содержащая подкаталоги и файлы, которые я хочу объединить с репозиторием SVN. Как я могу это сделать? Обратите внимание, что файлы в папке, которую я хочу объединить, могут находиться в разных папках. Например, /folder/dir1/file.cpp в папке может быть под /src/dir2/file.cpp в хранилищеСлияние папки с репозиторием SVN

+0

Непонятно, из вашего вопроса, что именно вы пытаетесь сделать. Что вы имеете в виду с «слиянием» точно? Добавление файлов? – arkascha

+0

Нет .. слияние файлов; то есть, исправление репозиториев с исправлениями, содержащимися в «папке» – Iceman

+0

Итак, в этом случае просто сделайте чек и замените файлы там исправленными версиями, которые у вас есть. Для svn это так же, как редактирование файлов. Точно так же. Когда это будет сделано, просто проверьте. – arkascha

ответ

0

Я хотел бы сделать это следующим образом:

Заканчивать репозитории в рабочей копию. Затем переместите (замените!) Файлы, которые должны быть объединены с соответствующими файлами. Поскольку это не очевидно, вы должны делать это один за другим. Когда вы закончите, вы можете изменить svn diff.

(Технически, это не слияние, но я не уверен, что если вы действительно хотели слияния :))

+0

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

+1

Ах! Итак, это слияние в конце концов. Затем проверьте версию, из которой вы отбросили версию. Сделайте, как я сказал, затем сделайте 'svn up', тем самым получив все изменения с этого момента (икру) до сих пор. После этого 'svn diff' и/или' svn ci'. – cxxl

+0

Да, это то, о чем я думал .. заменяя файлы, а затем делаю svn up – Iceman

3

Предисловие: Вы действительно должны прочитать SVN книгу!

Потому что из вашего описания проблемы не представляется возможным сделать однозначный вывод о начальном состоянии я опишу оба варианта

Начальная точка для обеих версий

У вас есть:

  • somefile of old version
  • patched somefile of old version
  • обновленный somefile of new version

Вы знаете пересмотр somefile of old version

Пусть старая версия будет R1

  • такой пересмотр: svn co [email protected] в случае отсутствия WC, svn up -r R1 в случае наличия WC
  • Заменить в WC somefile of old version by patched somefile of old version
  • Получить другие изменения: svn up. Все изменения между R1 и HEAD, появившиеся в somefile, будут объединены в patched somefile of old version: автоматически, если конфликты не были обнаружены или с использованием инструмента слияния для ручного разрешения конфликтов (если настроен слияние), и в результате в WC появится patched somefile of new version не-поручены-локальный_файл изменения, которые вы должны совершить для того, чтобы сохранить

вы не знаете, пересмотр somefile of old version

  • Использование ОС диф, генерировать патч от somefile of old version и patched somefile of old version
  • Получить somefile of new version (см svn up или svn co)
  • Попробуйте применить патч от стр.1 к somefile of new version
+0

Спасибо за ответ. В сценарии (b), если у меня нет номера версии некоторого файла, как я могу использовать разницу ОС для создания патча из некоторого файла старой версии и исправленного некоторого файла старой версии? – Iceman

+0

@Iceman: 'diff -u" некоторый файл старой версии "" patchched somefile старой версии "> file.patch' –

+0

У меня не было бы« somefile старой версии », если я не знаю версию. – Iceman

0

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

  • dump revisions 0 to в файл.
  • dump переделывает в другой файл.
  • создать новое репо и импортировать первый свалку.
  • сделайте заказ этой новой головки репозитория, замените файлы и сделайте чек.
  • импортировать изменения второго дампа в новое репо.

Таким образом вы добавляете дополнительную ревизию в середину репозитория. никогда не делал этого сам, но почему бы и нет? Просто убедитесь, что вы сохранили свое старое репо некоторое время ... вы никогда не знаете ...

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