var Col1 = [1];
var Col2 = [1, 2];
var Col3 = [1, 2, 3];
var Col4 = [1, 2, 3, 4];
var Col5 = [1, 2, 3, 4, 5];
var columns = [Col1, Col2, Col3, Col4, Col5];
addColumnsToTable(columns);
addColumnsToTable(columns);
function addColumnsToTable(columns) {
var rowsCount = Math.max.apply(null, columns.map(x => x.length));
var res = '';
for (var i = 0; i < rowsCount; i++) {
var row = '<tr>';
for (var column of columns)
row += `<td>${column[i] || ''}</td>`;
row += '</tr>';
res += row;
}
document.getElementById('content').innerHTML += res;
var head = document.getElementById('head');
if(!head.innerHTML.trim())
head.innerHTML = columns.map((x, i) => `<th>Col${i + 1}</th>`).join('');
}
table,
th,
td {
border: 1px solid black;
border-collapse: collapse;
}
#head > th{
color: red;
}
<table>
<thead>
<tr id='head'>
</tr>
</thead>
<tbody id='content'>
</tbody>
</table>
Я сделал этого мерзавца использования svn с моей разработкой, сделанной в репозитории мерзавца. Удаленная разработка сделана в подверсии. Я сделал мерзавца svn клоном репозитория подверсии, который я продвигаю в реальный репозиторий мерзавца. cronjob выполняет "мерзавца svn, повторно основывают && нажатие мерзавца" время от времени для создания зеркала мерзавца подверсии repo.
Для слияния изменений подверсии у меня есть 2 пультов ДУ в моей локальной копии мерзавца - "локальная разработка", источник и "от подверсии зеркально отражает" источник. Каждый раз, когда я чувствую потребность, я могу объединить изменения от зеркала подверсии в наше дерево разработки. Локальные изменения не затронуты, они живут независимо и не портят зеркало svn.
Я использовал gitosis, чтобы настроить и администрировать репозитории мерзавца. Шаги были бы чем-то вроде этого (из памяти, может быть неправильным):
# set up the mirror
git svn clone -s $SVN
git remote add origin git@$MACHINE:svnmirror.git
git push
# + cron job to do git svn rebase && git push every N hours/minutes
# set up the local working copy for development
git clone git://$MACHINE/svnmirror.git
# that's an anonymous, read only clone
# no push to the svn mirror for developers - only cronjob user can push there
git remote add newproject git@$MACHINE:myproject.git
git push newproject
# now do the real deal
git clone git://$MACHINE/myproject.git
# hack hack hack
git push # origin master not needed
git remote add svnmirror git://$MACHINE/svnmirror.git
git merge svnmirror/master
git push
У Вас может быть свой локальный репозиторий, где Вы фиксируете свои изменения, поскольку Вы уже сделали. Далее Вы сделали бы периодическое слияние из основного репозитория для слияния изменений, сделанных в основной соединительной линии в локальный репозиторий.
Единственная трудная вещь состоит в том, что необходимо отслеживать изменения, от которых Вы уже объединились из основного репозитория.
Это могло быть похожим на это:
svn merge -r X:Y baseRepositoryURL // merge from base repo
svn commit // commit the changes to local repo
svn merge -r Y:Z baseRepositoryURL // merge from base repo
svn commit // commit the changes to local repo
Где X пересмотр Вашего начального контроля, Y является главным пересмотром, время первого слияния и Z является главным пересмотром время второго слияния. Вы видите шаблон. Кроме того, важно, чтобы Вы были в базовом каталоге Вашего локального контроля когда issueing команды.