Я действительно не получаю то, что Вы хотите сделать, но вот список некоторого музыкального программного обеспечения CL, и для состава и для познания: http://www.cliki.net/Music
Вы можете объединить все ревизии (или определенные ревизии) одного файла в другой следующим образом
svn merge sourcefile targetfile -r 0:HEAD
Сначала я подумал, что нужно использовать - ignore-ancestry
(поскольку оба файла не имеют общей истории), но, очевидно, в этом нет необходимости. Я тестировал svn 1.6.3.
Вы, конечно, очень вероятно получите много маркеров конфликтов в результате слияния. Может быть проще выполнить слияние вручную (копирование и вставка слияния, как вы говорите), а затем запустить указанную выше команду слияния с - record-only
, чтобы сообщить об этом Subversion.
После при слиянии целевой файл
будет иметь свойство svn: mergeinfo
, которое указывает, какие коммиты из исходного файла
были слиты с ним. Когда вы просматриваете журнал targetfile
, вы можете просмотреть историю обоих файлов, используя параметр - use-merge-history
. TortoiseSVN имеет ту же функцию в виде флажка в форме журнала.
Если вы хотите скопировать в новый файл и удалить старый файл:
svn mv
Если вы хотите скопировать в новый файл:
svn copy
Если оба файла уже существуют:
# copy/paste with a text editor
Вы можете удалить файл и сохранить его историю с помощью:
svn del
С SVN вы не можете отслеживать историю слияния двух файлов. Вы можете объединить его вручную и сохранить след в сообщении фиксации.
Разве вы не можете оставить код в отдельном файле (после обрезки частей, которые вы не хотите сохранять) и включить этот файл в свой настоящий исходный файл?
// file foo.cpp:
...
namespace {
# include "util_code.inc"
}
Не совсем ортодоксальный, но должен работать ...
Я не думаю, что вы можете сохранить историю так, как вы ее описываете. SVN отслеживает историю для каждого файла отдельно, и он не будет отслеживать два отдельных файла, которые объединены вместе в одной строке кода.
Если вы начали с двух отдельных файлов, а затем объединили их в третий, история обоих файлов будет сохранена. Если вы объедините один в другой, то история одного из них будет «утеряна» в том смысле, что вы не сможете вернуться к истории «удаленного» файла, просто взглянув на историю.
Я думаю, что вы могли бы сделать в сообщении о фиксации, просто отметьте, что содержимое из другого файла было объединено, а затем зафиксируйте удаление в том же коммите.