?

Log in

No account? Create an account

CodeCore - сервер сборки приложений. Общая логика.
mikelsv
Идея написать сервер сборки приложений зрела давно, а руки доползли только сейчас. Итак, ситуация: сборка и отладка приложения под сервером с линуксом. Значит берем ssh, консоль, mc и руками правим код, собираем, запускаем в gdb. Это все конечно здорово, но хотелось бы здоровее. То есть, в виде сайта, с графическим редактором кода и прочими возможными плюшками.

Итак. Первым делом требуется обрисовать общую логику. Пораскинув мозгами я пришел к выводу, что:
1. За основу берется HTTP сервер. В первичном варианте без скриптовых языков, чистый C++. Потом скорее всего они потребуются.
2. База данных это хорошо, даже слишком, поэтому обойдемся без нее. Файлы будут храниться на диске в исходном виде.
3. Так как сервер непростой, то к нему будет прикручен HTTPS. В минимальном варианте можно использовать самоподписанный сертификат.
4. В продолжение темы авторизации делаем пользователей и группы.
5. История. Так как накосячить и удалить часть кода можно всегда история просто необходима. Но, тут вот какая штука. В отичае от всяких svn код будет сохраняться довольно часто. Хотя, один хрен. Создаем папку vsource и храним историю изменений там, в файле с тем же названием как и исходник. История пишется блоками в том же формате как и в svn и git. Плюс там должна быть метка времени и последним идут четыре байта размера записанного блока, чтобы в обратную сторону не составило труда пробежаться. А если подумать, то нахрен тектовый формат, пусть будет бинарный. Там кажется построчное сравнивание, и всего две операции: удалено и добавлено.
6. Хотелось бы дать возможность записывать файлы напрямую в папку с кодом. Тут очень здорово подойдет fuse. С одной стороны она будет показывать всю ту же структуру с исходниками, а с другой обрабатывать перезапись файлов.
7. Консольную утилиту для добавления пользователей и управления ими.

Итого файловая структура:
/users/ - настройки пользователей.
/groups/ - настройки групп.
/users/source/ - корень для проектов и кода.
/users/vsource/ - корень для версий.

Актуальные вопросы:
1. Один корень с кодом на всех или у каждого пользователя свой?
По логике надо каждому свой с настройкой доступа.
2. А еще есть всеми любтимые группы. Что с ними?
И их надо делать.
3. А как это будет все работать?
Да ты задолбал уже! Пользователь имеет к своей папки исходников неограниченный доступ. При доступе к чужим исходникам сначала проверяется разренение для пользователя, потом для групп в которых он состоит.


Итого: чудовищные обьемы кода при том, что толком работать еще ничего не будет.