szanaszét levő scriptek verziókezelése

Fórumok

Van egy dhcp-dns integrációs megoldásom ami tulajdonképpen shell scriptek gyűjteménye.
Igen jó lenne ezt valahogy verziókezelés alá vonni (praktikusan git).

Idáig egy ötletem van:

- egy folderbe összerakom a scripteket
- írok egy installer.sh scriptet ami tudja hova kell szétdobálni ezeket

és ezt a kupacot kezelem egyben gittel.

Van erre jobb ötlet / kész megoldás?

Hozzászólások

Ha megoldható, hogy a szkriptekre linkek mutassanak a megfelelő helyről, szerintem egyszerűbb megoldás.
Ha nem megoldható, akkor inkább vagy egy post-commit hook-ot írnék, ami a commit esetén automatikusan a megfelelő helyre átmásolja a változott szkriptet. Vagy (de lehet, hogy ez inkább csak a kalapács-szög eset részemről) inkább egy Makefile-t írnék (amit érdemes a szkriptek mellé csapni, természetesen őt is verziókezelni), és a post-commit-ből csak a make parancsot kell meghívni.
A post-commit-hook előnye, hogy nem kell minden módosításkor állandóan másolgatni is, hanem az automatikusan megtörténik.

csináld meg mappaszerkezetbe, csomagold össze tar.?z-be, aztán a telepítés csak egy tar -?xf ... /

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Mercurial szerver és Tortoise HG mint repo és ott verziózhatod őket?

git+make vagy git+(chef, puppet, ansible, whatever)

en mondjuk az elsore szavaznek elso korben

> - írok egy installer.sh scriptet ami tudja hova kell szétdobálni ezeket

A nyitó kérdés, amit szerintem senki nem tett fel, hogy a szétdobálni mit jelent? Több gépet, vagy egy gépen belül mindenféle könyvtárakba, esetleg userek hozzá, meg ilyesmi?

illetve, hogy fix infrastruktúrára kell ez, vagy mindenfelé, ahogy jön, mert mondjuk össze kell rakni egy ügyfélnél?

A forrásfájlokat tedd git alá, plusz csinálj belőle deb/rpm csomagot ízlés szerint, és azt telepítsd fel. Így nem csak a verziókezelést kapod meg, ahol a fájlok egy helyen vannak, hanem a telepített fájlok továbbra is szanaszét lehetnek a rendszeren, és még a csomagkezelő is tudni fog róluk.

Amit meg senki nem ajanlott:

Ha csak arrol van szo, hogy szet vannak dobalva a scriptek egy gepen belul, kulonbozo folderekbe, akkor azt is csinalhatod, hogy a "legmagasabb" (ez lehet akar a / is) kozos foldert git verziokovetes ala veszed, mindent exclude-olsz, kiveve a verziokovetni kivant scripteket, igy tulajdonkeppen az egesz folder strukturat megorzod es a scriptek is verziokovetve lesznek.

Hint: https://stackoverflow.com/a/987162

Nulladik körben tessen a /usr/local/{bin|sbin|etc} alá összerámolni a scripteket, beállításokat, egyebeket, utána a /usr/local/ alatti struktúrát bemásolod egy új git repóba (add mindenre, commit -m, push), a visszaút meg cd /usr/local ; git archive ... | tar -xf -
Ha meg nincs git az adott célgépen, akkor tarball, vagy adott disztribhez való csomag.

Ha minden fájlra megvan, hogy hova kell rakni végső soron, akkor én valószínűleg gitben felépíteném ugyanazt a könyvtárstruktúrát, például etc/foo.conf, usr/local/bin/foo.py stb. A szétdobálás ez esetben egy egyszerű rekurzív másolás, nem is kell hozzá külön szkript.

A kérdésben szerpelt, hogy "(praktikusan git)", de igen, bármilyen verziókezelővel (svn, cvs, rcs, estébé) meg lehet csinálni (több-kevesebb copással) azt, hogy a repóban kezelt fájlok (és csak azok) essenek ki a folyamat végén a megfelelő helyekre. A git archive alapban egy tar stream-et tol ki magából, amit aztán ízlés szerint lehet szétpakolni - a legegyszerűbb direktben a megfelelő könytárba belépve kicsomagolni, de persze simán lehet másképp is csinálni :-)

A git-ben ez az export :-P Nem külön fájlokat másol ki, hanem egy tarballt küld, és azzal azt csinálsz, amit akarsz.
Amikor github vagy hasonló helyről zip-ben/tar.gz-ben töltöd le az adott motyót, pont ez történik, az archive kap egy megfelelő paramétert, hogy hogyan tolja ki a repó tartalmát.

"dhcp-dns integráció", "szanaszét lévő scriptek", "installer.sh szétdobálja"...

Ezek alapján további részletek ismerete nélkül felmerül bennem, hogy a scripteken lévő jogosultságok vajon számítanak-e, és ha igen, akkor azokat is verziókezelni kell-e. Csak mert az egy szem executable biten túl a Git ilyesmit magától nem tárol, úgyhogy majd gondolj erre is.