arki-teki

mic bloc-notes mai mult sau mai puțin tehnic

Samba - foldere partajate

Atunci când folderele partajate au în denumire spații și/ sau caractere speciale (de ex. paranteze) pentru a putea monta aceste foldere la boot (prin fstab) trebuie înlocuite toate caracterele speciale cu codul lor ASCII (octal).

Un depozit `git` nou

(Atât pe Windows cât și pe Linux am un folder local în care lucrez și un folder remote în care fac backup pe server (linux). Folderul remote este accesat prin samba ca un folder montat local. Drept GUI pentru Git folosesc GitAhead.)

După ce încep să lucrez în folderul local, la un moment dat, inițializez depozitul git:

  • CLI: git init [folderul-depozitului-meu];
  • GUI: File -> Initialize New Repository.

Pentru a crea versiunea remote a depozitului:

  • CLI (variantele sunt de pe Stackoverflow - primele două cele mai votate răspunsuri):
    1. git init --bare [folderul-depozitului-meu.git] în folderul de pe server (cel montat cu samba); în folderul local: git remote add origin [calea\samba\către\folderul-depozitului-meu.git] (pentru a lega folderul local de cel de pe server); apoi git push origin master (pentru a salva pe server etapele de lucru locale) SAU
    2. git clone --bare [calea\samba\către\folderul-depozitului-meu.git]; apoi git remote add origin [calea\samba\către\folderul-depozitului-meu.git]; și git fetch (ca să verific că totul e în ordine).
  • GUI:
    • File -> Clone Repository în folderul de pe server montat cu samba cu aceeși denumire ca cel local plus extensia .git și la opțiunile Advanced bifez Create a bare repository;
    • apoi în depozitul local Remote -> Configure Remotes... și acolo adaug depozitul remote proaspăt creat;
    • Remote -> Fetch ca să verific că totul e OK.

Git LFS

  • git-lfs nu funcționează cu sistem de fișiere local -- nu se poate face git push către un repository din sistemul local de fișiere (fie el pe hard-discul local sau un folder partajat de pe un server de fișiere montat local);
  • git-lfs nu funcționează cu un repository remote care e denumit altfel decât origin (asta mai trebuie să o probez).
Acestea fiind clare pașii ar fi următorii: 1. În folderul proiectului se execută `git init` pentru inițializarea depozitului git local. 2. Pe server se execută `git init --bare ` pentru inițializarea depozitului _remote_. 3. Local și pe server, în directorul de proiect respectiv, se execută `git lfs install` care face setările necesare pentru sistemul de fișiere mari. 4. Local se setează tipul de fișiere mari care vor fi „avute în grijă” de sistemul `lfs` prin comanda `git lfs track '*.ext'` unde `ext` este extensia dorită (de ex. `.psd` sau `.dwg`). Se creează un fișier `.gitattributes` care poate fi editat direct pentru adăugarea/ eliminare altor extensii. Fișierul trebuie adăugat la depozit: `git add .gitattributes`. Și se „comite” totul: `git commit -m "Inițial/ sau alt comentariu adecvat"`. 5. Se face legătura cu depozitul _remote_: `git remote add `. Cred că `` trebuie să fie `origin` ca să funcționeze cu `lfs` iar `` poate fi calea către un director montat local sau către un director accesat prin `ssh` (dar apoi trebuie urmați pașii care indică o cale `https` pentru sistemul `lfs`) sau o cale `https` (presupun, nu am încercat deocamdată, că atunci pașii specifici pentru `lfs` nu mai trebuie urmați).

O alternativă la această succesiune de pași - excluzând partea cu lfs - ar fi cea descrisă în manualul GitPro:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done
$ scp -r my_project.git user@git.example.com:/srv/git #se face o copie pe server
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared #se setează depozitul de pe server pentru lucrul în echipă

  1. Se stabilește URL-ul pentru lfs:
git config -f .lfsconfig lfs.url https://<domeniuserver.tld>/<calea-repository>/info/lfs
git add .lfsconfig
  1. Se „împinge” totul pe server: git push -u <nume-remote> <nume-ramură-locală>.

Cam asta e...