23 May 17, Alexey Vissarionov ==> Pavel Gulchouck:
MD>>>> Как Гульчук сделал синхронизированную копию гитхаба и своего cvs
AV>>> Могу предположить, что у него первична CVS-репа
PG>> Там нет первичных/авторичных, там "master-master", т.е. все коммиты PG>> реплицируются в обе стороны, включая ветвление. Предпочтение, PG>> конечно, отдаётся гиту, cvs поддерживается исключительно для обратной PG>> совместимости, но коммитить в cvs тоже можно. PG>> Скрипты совсем небольшие, всего около сотни строк, хотя попариться с PG>> их отладкой какое-то время пришлось. Используются "git PG>> cvsexportcommit" и "git cvsimport". Если интересно, могу поделиться.
AV> Интересно. Делись :-)
Все модули проекта конвертнул и выложил на github (с историей и ветками): https://github.com/pgul/husky Решил не объединять их все в один репозиторий, а сделать сабмодулями. Впрочем, объединить всегда можно, если это покажется удобным. История при этом не потеряется, но ветки и тэги в этом случае будут относиться ко всему проекту husky - собственно, из-за этого я и не стал их объединить.
Получить всё можно так:
git clone git@github.com:pgul/husky.git cd husky git submodule update --init --recursive
Потом обновлять можно командой git pull --recurse-submodules
Можете клонировать, форкать и т.п.
Зачем это нужно - потому что мне не нравится то, как это делаешь ты. А именно - хочешь забрать проект из общественного доступа с несколькими разработчиками на личный сервак и личный домен, где патчи сможешь принимать или не принимать только ты лично, да ещё и с потерей истории и веток. По той же причине ты оставляешь его на гитхабе в read-only - чтобы не потерять единоличный контроль. А объяснение о том, что патчи должны присылаться только по фидо - нелепая отговорка, ведь полезность патча совсем нетрудно оценить независимо от того, каким путём он пришёл. Попутно тебе пришлось отказаться от гитхаба как от удобного инструмента (пул-реквесты, ревью, доработки, обсуждения и т.п.).
Такое усложнение развития убьёт проект, а мне бы этого не хотелось. И не хотелось бы перевода проекта из общественной собственности в личную.
Подключение jenkins и всякого прочего не зависит от того, на каком из серверов находится корневой репозиторий. Кроме того, на гитхабе есть веб-хуки.
Автоматическую синхронизацию между github и sf настрою позже.
Готов переместить репозиторий из github.com/pgul в github.com/huskyproject, если там будут даны права коммитить всем разработчикам husky (т.е. тем, которые имеют права коммитить в husky на sf.net).
Впрочем, если кто желает настроить репликацию между cvs и github у себя - you're welcome. Вот скрипты:
cvs2git.sh:
===== #! /bin/sh
set -e set -o pipefail
HOME="/usr/local/git-repos" REPO="$1" cd "$HOME/$REPO"
git checkout -q master git cvsimport -a -d /usr/local/cvsroot -r cvs -k -i "$REPO" | { grep -v '^Already' || true; } git fetch -q origin for branch in `git branch | sed 's/^. //' | grep -v ^_`; do