Repozytoria

Repozytoria git

Podczas wszystkich zajęć prowadzonych przeze mnie korzystamy z repozytoriów git.

Aby uzyskać dostęp do swojego repozytorium, należy wygenerować klucz prywatny/publiczny SSH. Uwaga! Mogą Państwo mieć już mieć swój klucz wygenerowany (w szczególności, jeśli uczestniczyli Państwo w innych zajęciach prowadzonych przeze mnie), można pominąć wówczas kroki 1 i 2 (aby sprawdzić, czy klucz już istnieje proszę wydać polecenie ls -l ~/.ssh/id_rsa.pub).

  1. Pod Linuksem należy wydać polecenie:
ssh-keygen

(Jeśli nie wiesz, co robisz, najlepiej 3 razy nacisnąć Enter.)

Można zabezpieczyć klucz hasłem, ale nie jest to obowiązkowe (można nacisnąć Enter bez podawania hasła).

Klucz publiczny powinien znaleźć się w pliku .ssh/id_rsa.pub — jest to domyślna nazwa, można po prostu nacisnąć Enter, w momencie gdy ssh pyta się o nazwę pliku (uwaga! klucz prywatny to plik .ssh/id_rsa, ze względów bezpieczeństwa nie powinien on być ujawniany!)

  1. Skopiować klucz publiczny do pliku o nazwie sNUMERINDEKSU.pub:
cp .ssh/id_rsa.pub sNUMERINDEKSU.pub
  1. Przesłać plik sNUMERINDEKSU.pub (jako załącznik) na adres filipg@amu.edu.pl.

  2. Po tym jak prowadzący zajęcia doda klucze, należy jednorazowo sklonować i wypchnąć repozytorium:

# najlepiej wrócić do katalogu domowego
# (w każdym razie nie klonować, będąc w katalogu `.ssh`!)
cd
# klonujemy repozytorium-matkę:
git clone ssh://gitolite@re-research.wmi.amu.edu.pl:1977/NAZWAREPO.git
mv NAZWAREPO NAZWAREPO-sNUMERINDEKSU
cd NAZWAREPO-sNUMERINDEKSU
git config core.filemode false # ... konieczne, jeśli pracujemy na komputerze wydziałowym
# ...(na dyskach sieciowych są źle obsługiwane prawa dostępu)
# przerzucamy się na nasze repozytorium
git remote set-url origin ssh://gitolite@re-research.wmi.amu.edu.pl:1977/NAZWAREPO-sNUMERINDEKSU.git
# pierwsze wypchnięcie do naszego repozytorium:
git push origin master
# na przyszłość dodajemy odniesienie do repozytorium matki
git remote add mother ssh://gitolite@re-research.wmi.amu.edu.pl:1977/NAZWAREPO.git

Problemy z dostępem do gita

W razie problemów proszę jeszcze raz wygenerować i wysłać klucz, a także wykonać następujące polecenia i przesłać prowadzącemu wynik ich działania:

ls -ld ~/.ssh
ls -l ~/.ssh
md5sum ~/.ssh/id_rsa.pub

Znane problemy

REMOTE HOST IDENTIFICATION HAS CHANGED

Przy przełączeniu z komputera wydziałowego na x2go (i z powrotem!) może pojawić się następujący komunikat:

Cloning into 'daut-2016'...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:TlPgN55AbUDFuvy+RpKdFii6W4VAhzEOBMjHdKipGsY.
Please contact your system administrator.
Add correct host key in /home/students/s123456/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/students/s123456/.ssh/known_hosts:1
  remove with:
  ssh-keygen -f "/home/students/s123456/.ssh/known_hosts" -R [re-research.wmi.amu.edu.pl]:1977
ED25519 host key for [re-research.wmi.amu.edu.pl]:1977 has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

W takim wypadku proszę wykonać polecenie podane w komunikacie, np.:

ssh-keygen -f "/home/students/s123456/.ssh/known_hosts" -R [re-research.wmi.amu.edu.pl]:1977

i kontynuować przedsiębrane kroki.

Alternatywne klucze

W razie potrzeby (np. dostęp do repozytorium z laptopa, komputera w domu itd.) można przesyłać alternatywne klucze, proszę nazywać je sNUMERINDEKSU-2.pub, sNUMERINDEKSU-3.pub itd.

Po zaakceptowaniu klucza przez prowadzącego:

ssh -p 1977 gitolite@re-research.wmi.amu.edu.pl perms NAZWAREPO-sNUMERINDEKSU + WRITERS sNUMERINDEKSU-2

Uwaga: musi to być wykonane z komputera zawierającego główny klucz (czyli z komputera uczelnianego albo przez x2go). Jeśli to niemożliwe, a zależy Państwu na szybkim dostępie, proszę o kontakt mejlowy.

Uaktualnianie repozytorium

Aby zaciągnąć uaktualnienia z repozytorium-matki, należy wykonać następujące polecenie (będąc w środku repozytorium):

EDITOR=nano git pull mother master

Może pojawić się edytor nano, należy nacisnąć CTRL-o, ENTER i CTRL-x.

Więcej informacji o gicie

Git jest potężnym i skomplikowanym narzędziem. W czasie zajęć można bezmyślnie korzystać z gita, warto jednak bliżej się z nim zapoznać i zrozumieć podstawowe jego zasady, tym bardziej że obecnie jego nieznajomość dyskwalifikuje na rynku pracy.

Zob.:

XKCD 1597

XKCD 1597