Od pewnego czasu zacząłem używać git’a do kontrolowania wersji, git wyparł mercurial’a. Git okazał się dla mnie bardziej elastycznym systemem zarządzania wersjami, nie wyprze on co prawda na razie subversion’a którego używam w bardzo wielu projektach, ale jak na razie dobrze sobie radzi z loklanymi projektami. W szczególności świetnie współgra z ruby on rails, w których robię coraz więcej „szybkich” projektów.
Dzisiaj okazało się, że potrzebuję mieć zdalnego dostępu do repo (znowu lenistwo) stwierdziłem, że użyjemy git’a. Jak to zrobić ?
bash> ssh example.com
example:~> mkdir git
example:~> cd git
example:~/git/> mkdir app.git
example:~/git/> cd app.git
example:~/git/app.git/> git --bare init
example:~/git/app.git/> ls -l
total 16
-rw-r--r-- 1 1005 0 23 27 gru 20:10 HEAD
drwxr-xr-x 2 1005 0 512 27 gru 20:10 branches
-rw-r--r-- 1 1005 0 66 27 gru 20:10 config
-rw-r--r-- 1 1005 0 58 27 gru 20:10 description
drwxr-xr-x 2 1005 0 512 27 gru 20:10 hooks
drwxr-xr-x 2 1005 0 512 27 gru 20:10 info
drwxr-xr-x 4 1005 0 512 27 gru 20:10 objects
drwxr-xr-x 4 1005 0 512 27 gru 20:10 refs
example:~/git/app.git/> exit
bash> cd ~/MyProj/app
bash> git remote add origin ssh://example.com/~/git/app.git
bash> git push origin master
bash> cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
url = ssh://example.com/~/git/app.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
example:~> mkdir git
example:~> cd git
example:~/git/> mkdir app.git
example:~/git/> cd app.git
example:~/git/app.git/> git --bare init
example:~/git/app.git/> ls -l
total 16
-rw-r--r-- 1 1005 0 23 27 gru 20:10 HEAD
drwxr-xr-x 2 1005 0 512 27 gru 20:10 branches
-rw-r--r-- 1 1005 0 66 27 gru 20:10 config
-rw-r--r-- 1 1005 0 58 27 gru 20:10 description
drwxr-xr-x 2 1005 0 512 27 gru 20:10 hooks
drwxr-xr-x 2 1005 0 512 27 gru 20:10 info
drwxr-xr-x 4 1005 0 512 27 gru 20:10 objects
drwxr-xr-x 4 1005 0 512 27 gru 20:10 refs
example:~/git/app.git/> exit
bash> cd ~/MyProj/app
bash> git remote add origin ssh://example.com/~/git/app.git
bash> git push origin master
bash> cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
url = ssh://example.com/~/git/app.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Ot i wszystko, po ssh szybkie repo.