1. Поднять на "сервере" сервер git (это не тавтология)
2. Научиться с репозиториями этого сервера работать по ssh.
Первая задача в первом приближении решилась просто: скачиваем исходники git одним архивом, разархивируем, читаем внимательно файл INSTALL, выполняем команды:
$ make configure $ ./configure --prefix=/usr $ make all doc # make install install-doc install-htmlв общем, на вид ничего сложного, справится даже такой тупень, как я.
Вторая задача, как оказалось, тоже не бином Ньютона. Если, конечно, внимательно прочитать инструкцию. Или полезные указания опытных людей. Или ещё что-нибудь.
Но это всё, конечно, не про меня. Узнав про команду ssh-keygen и обрадовавшись открывшимся возможностям я полез заводить юзера git, создавать домашнюю папку, давать разрешения и т.п. В результате каких-то вычурных команд репозиторий обосновался в домашней папке этого пользователя, а сам пользователь получил возможность интерактивного входа в систему. Кошмар. (Зато научился блокировать и разблокировать пользователя командами passwd -l git и passwd -u git)
Короче говоря, сделал так. В папке /opt создал символическую ссылку на папку с репозиторием (этот репозиторий с проектами будет жить на отдельном диске), и принял следующую схему работы при создании нового проекта.
На сервере выполняем команды:
$ cd /opt/git $ mkdir newProject $ cd newProject $ git init --bare $ git commit -m 'Initial commit'
На клиенте выполняем команды
$ cd newProject $ git init $ git remote add origin mylogin@myserver:/opt/git/newProject $ git pull origin master
Если когда-нибудь этот репозиторий перекочует, можно будет сменить оригины командой
$ git remote set-url origin mylogin@myserver:/new-git-repository/newProject(кстати, текущие значения этих оригинов в текстовом виде хранятся в папке проекта в файле .git/config)
Ну, эта схема ещё явно не окончательная.
Кстати, набрёл еще на одну памятку. Может, пригодится...
Важное дополнение: клиент git под Windows как-то странно рисует кириллические имена файлов. Вроде бы научить его русскому языку удалось командой:
$ git config --global core.quotepath false