Git


 * gitg

Установка
make config-recursive install clean -C /usr/ports/devel/git


 * Первая установка
 * Оставил iconv - для других кодировок (имена файлов руские?)
 * gitweb - вебморда, Для gitweb требуется выбрать [x] perl (build perl-based git-tools, Сбросить опцию Enable building of GUI tools
 * etcshell - ?.
 * "Enable building of GUI tools" - установка gitk, git-gui git-citool и установка зависимости для них - Tcl/Tk
 * perforce - commercial, proprietary, centralized revision control system

Оставил ICONV и CURL только
 * Вторая установка


 * Третья установка
 * ICONV, CURL убрал
 * Надо оставить еще [ ] Modify /etc/shells

после установки появится
 * демон /usr/local/libexec/git-core/git-daemon
 * скрипт /usr/local/etc/rc.d/git_daemon

Настройка
pw groupadd -n git -g 9418 pw useradd -n git -u 9418 -g git -c git -d /git -s /usr/local/libexec/git-core/git-shell -h -

Новый репозитарий mkdir -p /git/base Существующий Скопировать все дерево в /git chmod 750 /git/ chown git:git /git/ Права chown -Rv git:git /git/ chmod -Rv 775 /git/

были 700 почему-то. сменил на 750

В грппу git добавить пользователей vi /etc/group git:*:9418:leksey,dimarik,b108,ratsy

если попробовать подключить по ssh и пользователем git, то после успешной авторизации отобразится текст fatal: What do you think I am? A shell?

войти одним из этих пользователей

Работа с репозитарием
"Удаленный репозиторий это обычно голый (чистый, bare) репозиторий ― репозиторий Git не имеющий рабочего каталога. Поскольку этот репозиторий используется только для обмена, нет причин создавать рабочую копию на диске, и он содержит только данные Git. Проще говоря, голый репозиторий содержит только каталог .git вашего проекта и ничего больше. По существующему соглашению, каталоги с голыми репозиториями заканчиваются на .git,"

mkdir /git/base/test.git cd /git/base/test.git git init --bare --shared Initialized empty shared Git repository in /git/base/test.git/

mkdir ~/test cd ~/test git init Initialized empty Git repository in /usr/home/leksey/test/.git/

echo '123456' > foo git add. git commit

выведется в vi текст комментария  .git/COMMIT_EDITMSG: 15 lines, 333 characters. [master (git push origin masterroot-commit) be1a903] initial commit Committer: User  Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly:

git config --global user.name "Your Name" git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

git commit --amend --author='Your Name '

1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 foo 

Добавление удаленного репозитария с именем origin git remote add origin git@dcjail.net.ru:base/test.git

Удаление git remote rm origin

git push origin master тут он пытается подключиться по ssh и авторизоваться по ключу

git remote add origin git@dcjail.net.ru:base/test.git

Нестандартный порт. Пусть до .git абсолютный (?). Как при этом указать ключ?

git remote add origin ssh://git@dcjail.net.ru:812/git/base/test.git

После 812 не должно быть двоеточия или другого разделителя- порт нормально распознается.

Или прописать все сюда less ~/.ssh/config  Host dcjail.net.ru        Hostname dcjail.net.ru         User git Port 812 IdentityFile /mnt/keys/aviamap/directname 

Пока не изменил права, при подключении отображалось в логах Authentication refused: bad ownership or modes for directory /git chmod 700 /git

Если ничего нету, то отобразится, поэтому надо закоммитить error: src refspec master does not match any. error: failed to push some refs to 'git@dcjail.net.ru:base/test.git'

git push origin master  Counting objects: 3, done. Writing objects: 100% (3/3), 209 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To git@dcjail.net.ru:base/test.git * [new branch]     master -> master 

Клонирование в текущую директорию git clone /git/base/aviamaps.git/
 * Локальное использование

git init

git remote show /git/base/aviamaps.git/ Fetch URL: /git/base/aviamaps.git/ Push URL: /git/base/aviamaps.git/ HEAD branch: master
 * remote /git/base/aviamaps.git/

git remote add origin /git/base/aviamaps.git/

git pull

gitweb
mkdir /var/www/git cp -v /usr/local/share/examples/git/gitweb/git* /var/www/git/

правка конфига vi /var/www/maps/git/gitweb.cgi

Чтобы сервер работал по протоколу git. По умолчанию работает по SSH, также умеет HTTP

>> rc.conf git_daemon_enable="YES" git_daemon_directory="/git" git_daemon_flags="--syslog --base-path=/git --export-all --detach"

Если без detach - то не отпустит консоль

/usr/local/etc/rc.d/git_daemon start

telnet 192.168.0.250 9418

Получение
git clone git://github.com/svetlyak40wt/yafotkiuploader.git

Ссылки

 * http://forums.freebsd.org/showthread.php?t=10810&nojs=1#goto_threadtools
 * http://progit.org/book/ru/ch4-2.html

non-22 port

http://www.bramschoenmakers.nl/en/node/720

Simple ssh access to a git repo can be sufficient for a small dev team–but what if you’re using a non-standard ssh port?

The solution–do as Linus says. Use ~/.ssh/config.

My config now looks like this:

Host my.servername.org Port 1234

Remember that ~/.ssh needs to be 700 (read/write/execute for only the owner), and the files inside are all 600:

$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/*