Если можно управлять одним из массивов, можно изменить размеры его прежде, чем выполнить копию:
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
int array1OriginalLength = array1.Length;
Array.Resize(ref array1, array1OriginalLength + array2.Length);
Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
Иначе, можно сделать новый массив
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
T[] newArray = new T[array1.Length + array2.Length];
Array.Copy(array1, newArray, array1.Length);
Array.Copy(array2, 0, newArray, array1.Length, array2.Length);
[еще 112] на доступных методах Массива на MSDN.
Выяснил, как делать то, что я хочу, на основе этого ответа на объединение репозиториев git , используя git filter-branch, чтобы сделать так, как если бы модуль, импортированный из CVS, был объединены непосредственно в подкаталог, желаемый в существующем репозитории git
Начиная с каталога, содержащего newproj, существующего репозитория git:
% git cvsimport -k -u -s \- -A ~/Documents/cvs-authors.txt \
-C newproj-sibling oldproj
% cd newproj-sibling
% git filter-branch --index-filter \
'git ls-files -s | gsed "s-\t-&subdir/of/newproj/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
% cd ../newproj
% git pull ../newproj-sibling master
Предполагается, что целевой подкаталог в репозитории git был полностью новым или, по крайней мере, не содержал файлов с общими именами с теми, что находятся в модуле CVS, слияние должно пройти без сбоев.
Одно предостережение: я понял выше, потому что BSD sed, поставляемый с OS X, не может выполнять экранирование символов, например \ t, а я не пока не удосужился присвоить ему псевдоним.
У вас есть три варианта. Все они начинают с выполнения чистого cvsimport, так что продолжайте и делайте это.
Номер один означает, что внешний проект полагается на внутренний, но, вероятно, это нежелательно для вас.
Номер два - это объясняется в этом как объединить поддеревья . Это может быть достаточно для вас.
Но , если вам нравится хорошая чистая линейная история, вы можете сделать № 3 и запутать их навсегда. Некоторое время назад я сделал нечто подобное в проекте очистки, и у меня все еще есть много документации и инструментов.
Основная идея заключалась в том, чтобы разделить все изменения в историю исправлений, которая будет реконструировать изменения. По умолчанию эта история находится в некотором порядке репозитория, но запуск сценария, о котором я упоминал в сообщении, переставит исправления в новую последовательность в хронологическом порядке.
Хеш дерева должен сообщить вам, что вы ничего не сломали кроме линии.
Если бы я сделал это снова, я бы, возможно, просто испустил бы файл графтов и сделал фильтр-ветвь
.