Sziasztok!
Lassan eljön az ideje, hogy váltanom kell forráskezelőt. Eddig az MSSourceSafe-et használtam, egyszerű, érthető, kezelhető, egyszerűen menthető az adatbázisa, etc., de sajnos van egy nagy hátránya: csak 32 bites, így az utolsó Visual Studio verzió, amivel hajlandó együttműködni, az a 2019-es, mert az össze utánajövő rendszer 64 bites.
Elkezdtem ismerkedni a Git-el. A Github-al kezdtem, onnan minden működik megfelelően, tudtam új repository-t készíteni, meg minden egyebet is, ami szükséges a működéséhez. De erre csak a magán jellegű kódjaimat rakom fel, a céges kódokat nem rakhatom ki 3rd party tárhelyre, így ahhoz saját szervert kell készíteni.
Elkészült a saját Git szerver. Ez egy Ubuntu szerveren üzemel és ezzel vannak a problémáim:
A putty-al belépve a szerverre létre tudok hozni új repositoryt. Az így létrejött repót tudom kliensről használni: klónozható, tudok állományokat hozzáadni, etc. Viszont képtelen vagyok új repót létrehozni: se VS alól, se parancssorból. Milyen lépéseket kellene tennem, hogy sikerüljön?
Teszem fel van egy forráskódom a D:\Dotnet\Homkozó\TesztProgram mappában, ezen mappán belül természetesen a megfelelő könyvtárstruktúrával. Milyen parancsokat kell kiadnom ahhoz, hogy az elérési útvonal alatt levő teljes struktúra bekerüljön a TesztProgram nevű repóba?
Keresek a neten is, de eddig mindenhol csak arra találtam leírást, hogyan klónozzak létező repót, vagy hogy hozzak létre repót a szerver környezetében...
Gábor
Update:
A következő lépésekkel megoldható az új repó létrehozása a szerveren:
A kiinduló feltétel, hogy a szerver gépen legyen SMB-vel megosztva az a mappa, ahol a repók vannak. Ennek nálam git-repos a neve
cd D:\Dotnet\Homkozó\TesztProgram
git init --bare \\ipcim\git-repos\TesztProgram
git init
git add .
git commit -m "Megjegyzés"
git push -u ssh://git@ipcim/git-repos/TesztProgram master
És lőn!
- 971 megtekintés
Hozzászólások
Amikor csinalsz egy repot Githubon, es az ures repo kiirja, hogy mit kell csinalni, azt kell lokalis szerverrel is.
git init
git add .
git commit -m "valami valami commit message"
git remote add origin myuser@myserver.akarmi:path/to/repo
git push -u origin master
- A hozzászóláshoz be kell jelentkezni
Közeledünk, de valamit elrontok.
cd D:\Dotnet\Homkozó\TesztProgram
git init
git add .
git commit -m "valami valami commit message"
git remote add sajatom ssh://git@ipcim/git-repos/TesztProgram
git push -u sajatom master
Válasz:
fatal: '/git-repos/TesztProgram' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists
Mit rontottam el?
Gábor
Ui: Természetesen a szerveren a git felhasználónak megfelelő jogosultsága van, illetve a git push utasítűs után kérte a git felhasználó jelszavát, amit megfelelően meg is adtam.
- A hozzászóláshoz be kell jelentkezni
Az így létrejött repót tudom kliensről használni
Muti egy működő példát. git clone ...
- A hozzászóláshoz be kell jelentkezni
fatal: '/git-repos/TesztProgram' does not appear to be a git repository
De egyebkent az? Tehat tudsz bele commitolni? Vagy csak egy ures folder?
A git decentralizalt, a szerveren ~ugyanolyan repo van, mint nalad. Egyebkent a szerveroldalon git init --bare kell neked.
- A hozzászóláshoz be kell jelentkezni
Természetesen a /git-repos/TeszProgram mappa még nem létezik a szerveren, hisz pont ezt a repót szeretném létrehozni. Ha belépek putty-al, akkor létre tudom hozni a repót, azzal nincs gond. A gond ott van, ha ezt kliensről szeretném.
Egészen a git push utasításig minden rendben van, létrejön a helyi repó, a commit is tökéletesen lefut.
- A hozzászóláshoz be kell jelentkezni
A gond ott van, ha ezt kliensről szeretném.
ssh myuser@myserver.local 'cd /path/to/repo && git init --bare' ?
En mindenesetre tovabbra is valamilyen kesz megoldasban gondolkodnek.
- A hozzászóláshoz be kell jelentkezni
Elkészült a saját Git szerver.
Na jó, de melyik?
Teljesen jól tud működni amit szeretnél, de én mindig fordítva csinálom. Szerveren létrehoz, clone a saját gépemre, majd egyszerűen átmásolom a meglévő könyvtárat a klónozott git könyvtárba, majd:
git add . ; git commit -m "üzenet" ; git push
- A hozzászóláshoz be kell jelentkezni
Hogy-hogy melyik? Több is van?
Így nekem is működik, de nem akarok minden egyes projektnél belépegetni a szerverre, hogy létrehozzam a repót... Nem beszélve a néhány tucat már létező kódról, amit sokkal egyszerűbb lenne hozzáadni...
- A hozzászóláshoz be kell jelentkezni
Van egypár,
GitHub, GitLab, Bitbucket, gitolite, Gerrit, AWS megoldása, Google megoldása ...
- A hozzászóláshoz be kell jelentkezni
Ubuntu szerveren apt install git. Ez elég infó?
- A hozzászóláshoz be kell jelentkezni
Ez csak telepiti a git nevu programot, nem csinal neked repokat magatol.
- A hozzászóláshoz be kell jelentkezni
Tudom. Ez az Ubuntu szerverre telepíti a git szervert. Ezt erre írtam válaszul:
"GitHub, GitLab, Bitbucket, gitolite, Gerrit, AWS megoldása, Google megoldása ..."
- A hozzászóláshoz be kell jelentkezni
Nem igazán. Vagyis, hát nem nagyon van olyan, hogy "git szerver" önmagában. A git egy elosztott cucc, egy git repo a gyakorlatban csak a .git könyvtárban levő rakás file. A git kliens tud repo példányok között szinkronizálni úgy, hogy ssh eléri a másikon a fileokat, de ennyi, nincs a scopejában, hogy ott repokat automatán csináljon vagy bármiféle szerver szerű működést produkáljon, ezért kell ezt neked valahogyan kézzel intézni.
A githublabtea az hoz egy plusz réteget, webuival, ilyesmivel. De jellemzően ott is meg kell csinálni a szerveren a repot, max csak volt rá beépített support az IDÉdben.
Egyébként az is felmerül kérdésként, hogy valójában kell-e neked szerver, ha úgy is egyedül dolgozol? (Lehet, hogy igen, lehet értelme, csak nem tudom, nem az van-e, hogy megszoktad, hogy a vcshez kell egy szerver).
- A hozzászóláshoz be kell jelentkezni
Kell is, meg nem is.
A VSS is csupán kliensként működik, az adatbázisa csak egy megosztott könyvtár volt, nem kellett hozzá a szerver. Ez nekem tökéletesen meg is felelne továbbra is, csak hát az MS levette a palettáról...
A VS is a git-et nyomja ezerrel, eleve benne van a git támogatása, így adott volt, hogy ha már váltani kell, akkor a git-et használjam. Amennyit eddig tapasztaltam belőle, ezerszer bonyolultabb a kezelése, mint a VSS-é, miközben nem ugyanazt az élményt nyújtja, mint a VSS. Amikor elkezdtem anno használni a VSS-t, ott többen voltunk fejlesztők és nagyon kényelmes volt az, hogy ha nálam szerkesztés alatt volt egy állomány (CheckOut -ot mondtam neki), addig mások nem tudták módosítani. Dolgoztam közben Delphi + CVS-el, akkor ugyan csak 3-an fejlesztettünk, de kínlódás volt, amikor véletlenül sikerült belefutnunk abba, hogy ugyanahhoz az állományhoz nyúltunk hozzá.
Bár most már jó ideje egyedül dolgozom, de használok forráskezelőt, mert egyrészt tökéletes mentés arra az esetre, ha a gépem összeomlana, ez esetben sem veszik el a forrás, másrészt vissza tudom nézni a módosításaim történetét. Ja és az sem elhanyagolható szempont, hogy a források biztonsági mentését is sokkal könnyebb megoldani, mert csak a VSS megosztott könyvtárát kell menteni, baj esetén visszaállítani és minden rendben lesz.
"nincs a scopejában, hogy ott repokat automatán csináljon vagy bármiféle szerver szerű működést produkáljon"
Ezt nem tudom értelmezni. Az Ubuntura rakott helyben kiadva a megfelelő parancsot tud repót létrehozni. Tud állományokat hozzáadni, commitolni, klónozni. Létező repóba tud távoli gépen levő repóból adatokat átvenni (git push parancs). Számomra ez szerver-szerű működés. Akkor miért nem tud új repót létrehozni?
- A hozzászóláshoz be kell jelentkezni
Kell is, meg nem is.
Nem az volt a kérdés, hogy kell-e verziókezelő, hanem, hogy kell-e szerver? A git teljesen faszán működik localban, bármikor pár perc munkával be lehet tenni egy "központi" helyre, ha többen lesztek. Nyilván, mentésnek nem rossz, ez pont az egyik use-case volt, amit gondoltam,de arra az is jó, ha mented a géped.
Ezt nem tudom értelmezni. Az Ubuntura rakott helyben kiadva a megfelelő parancsot tud repót létrehozni. Tud állományokat hozzáadni, commitolni, klónozni. Létező repóba tud távoli gépen levő repóból adatokat átvenni (git push parancs). Számomra ez szerver-szerű működés. Akkor miért nem tud új repót létrehozni?
Szerver szerűnek tűnhet, de valójában nem az. Az a két példány egyenrangú, mehetne adatáramlás mindkét irányba. És a git csak annyit tud, hogy repo példányok között elérhetővé tesz adatot. De a repó példányoknak valahogy létezniük kell, a git nem foglalkozik azzal, hogy mindenféle OSen hogy, meg hova kell könyvtárakat létrehozni. Azt köré kell pakolni, úgy, ahogy a transzfert is. Nincs benne se http se ssh szerver.
- A hozzászóláshoz be kell jelentkezni
Én a git-hez annyira pont nem értek, de szerintem jogos elvárás user szemszögből a repo létrehozás. Ha már egyszer van egy csatorna a szerverre, amin keresztül lehet írni egy már létező git repót, akkor onnan már nem nagy ugrás ez. Egy megoldás pl. van itt, de ez csúnya módon pont a túloldalon futtatja a gitet: https://stackoverflow.com/questions/30691610/how-to-create-a-remote-rep…
- A hozzászóláshoz be kell jelentkezni
Én a git-hez annyira pont nem értek, de szerintem jogos elvárás user szemszögből a repo létrehozás.
Ez egy teljesen érthető igény, csak a git nem ilyen, ezért mondtam, hogy ...
Ha már egyszer van egy csatorna a szerverre, amin keresztül lehet írni egy már létező git repót
... mert az nem szerver, csak egy repó másik példánya. Nem a szervert lehet elérni, hanem azt a konkrét másik példányát a reponak, és ezért
akkor onnan már nem nagy ugrás ez
lesz ez mégis nagy ugrás, mert teljesen kívül esik a git scopeján az, hogy hogyan kell több repositoryt kezeleni, a git egy darab repositoryt kezel. Nincs erre semmilyen eszköz, szabály akármicsoda, a repo collection a gitben egy nem létező fogalom. És látszik is, hogy a valóban git szervereknek van is valami struktúrája arra, hogy hogyan vannak ezek rendszerezve, ott van ez megoldva. Szóval vagy kell használni egy olyat, és akkor valaki már megoldotta helyetted, hogy ki van vezetve az apira, hogy szeretnék egy új repot, azt bele lehet tenni az IDE plugina, és akkor neked van create repo on github gombod. Ha te házilag csiszolod a "szervert", akkor ez rád marad, és kell az kicsi script, ami megugorja ezt. (És tippre valami taskkal pl simán bele lehet kötni mondjuk egy vscodeba, vagy akármi normális IDE-be.)
Ha az ember gitet használ, érdemes tisztában lenni azzal, hogy ez itt két layer, és akkor kevésbé leszel eltévedve.
- A hozzászóláshoz be kell jelentkezni
Elég. Általában git szerver alatt nem ezt szoktuk érteni. Bár tény, hogy működik, de azért ez elég fapados megoldás. És melós...
- A hozzászóláshoz be kell jelentkezni
OK, fapados és melós. Nyilván Github jobb lenne, több infót is kapok róla, saját projektjeimmel működik is, de a céges rendszerek forrásai nem mehetnek felhőbe.
- A hozzászóláshoz be kell jelentkezni
Irtunk tobb peldat, amit tudsz helyben hosztolni, egyebkent emlekeim szerint a Githubnak is van ilyen valtozata.
- A hozzászóláshoz be kell jelentkezni
Ööö... melyik része melós? Mert pl. a saját cuccaim egy része pont így lakik gitben, és alapvetően tudja azt, ami nekem kell (pull/push dimenzió, szóval semmi cicoma)
- A hozzászóláshoz be kell jelentkezni
nem akarok minden egyes projektnél belépegetni a szerverre, hogy létrehozzam a repót
Hat de akkor hogy lesz repo a szerveren? :)
- A hozzászóláshoz be kell jelentkezni
Pont ez volt a kérdésem. Githubra tudok új repót feltenni VS alól (tehát nem kell a webes felület ahhoz, hogy létrejöjjön). A saját git szerver ezt nem tudja?
- A hozzászóláshoz be kell jelentkezni
"A saját git szerver ezt nem tudja?"
Melyik? És ne kevert a repót meg a projektet, mert egy github repository gyakorlatilag egy könyvtár a projekten belül, ahol fájlok meg további alkönyvtárak vannak.
- A hozzászóláshoz be kell jelentkezni
A Visual Studoban megnyitottam egy projektet (valami.sln), aminek vannak forrásállományai. Néhány kattintással megadtam neki a Github regisztrációm adatait, ami alapján simán létrehozta a github fiókomban a a "valami" nevű repository-t, amit a https://github.com/usernevem?tab=repositories oldalon látok is. Természetesen "Commit and Push" után a forrásállományaim is fent vannak a githubon.
Azt gondoltam, hogy ugyanilyen egyszerűen meg tudom ezt csinálni egy saját hálózatban futó Ubuntus git szerverrel is. Egyre inkább az az érzésem, hogy nem, mindenképp az kell, hogy a repót a szerveren hozzam létre először...
- A hozzászóláshoz be kell jelentkezni
Na de ember, a visual studio zt csinalja ilyenkor, hogy az API-n keresztul csinal egy repot a github-ra. Mi koze ennek ahhoz, hogyha sajat talpas git repo-t akarsz uzemeltetni? Tok masrol beszelunk.
A sajat git-ed az majd beszel ssh-val talan. Ha nagyon szopoagra akarsz menni, akkor beallitod a https-t is (git http-backend).
Ha nagyon azt akarod csinalni mint github, gitlab stb, akkor irj egy kis python programot amiben MoC-olod a github API-t es leforditod lokalis git parancsokra amit akarsz. Illetve itt neked csak a "create repo" api call kell.
De mar tobben is irtuk, miert szopatod magad es miert nem raksz fel egy self-hosted gitlab-ot vagy egy giteat??
- A hozzászóláshoz be kell jelentkezni
Értem. Tehát a kérdésemre az egyszerű válasz: repót csak a szerveren tudom létrehozni.
"De mar tobben is irtuk, miert szopatod magad es miert nem raksz fel egy self-hosted gitlab-ot vagy egy giteat??"
Mert pont ugyanannyira értek hozzá, mint a git-hez.
- A hozzászóláshoz be kell jelentkezni
Egy gitlabot jól felrakni azért messze nem triviális. Tudom mert "túl vagyok rajta".
A gitlab mondjuk jó esetben sokkal több mint egy sima git repó de akkor is.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
Nem bizony. És üzemeltetni sem :)
- A hozzászóláshoz be kell jelentkezni
Akkor nincs mas hatra, ki kell nyitni a penztarcat, es megvenni az onprem Githubot.
- A hozzászóláshoz be kell jelentkezni
Igen nem trivialis. Plane hogy aztan uzemeltetni is kell. Hobbi projektnek nem ajanlanam en sem. Vagy ha kicsi a ceg. Sot, nem csak az uzemeltetessel lesz ot gond, hanem hogy az ember kezelje magukat a gitlab/github objektumokat is (projekt, team, subfolder, losz, anyamkinyja)
De azert annal egyszerubb, mint sajat wrappereket irni a git-hez, meg python apikat :D
(meg ki lehet kapcsolni a sok csilogany babzsakfotel konzumidiota bloat feature-t is :D, hajbi hol az anyja kinnyaban van, o szebben tud ilyen faszsagokat mondani)
- A hozzászóláshoz be kell jelentkezni
A VS-es projektből csinál GH-s repository-t. GH/GL esetén a "projekt" több, összetartozó repository gyűjteménye.
- A hozzászóláshoz be kell jelentkezni
Githubra tudok új repót feltenni VS alól (tehát nem kell a webes felület ahhoz, hogy létrejöjjön)
Ezt fejtsd ki legyszi.
Van egy lokalis repod, felveszel egy github.com-os remote-ot, push, es letrejon a repo magatol? Meg lennek lepve. Nem csak valami GUI magic moge van elrejtve?
- A hozzászóláshoz be kell jelentkezni
Gondlom a VS GitHub extension megcsinálja automagically...
- A hozzászóláshoz be kell jelentkezni
meghivja az API-n a create repo-t :D
- A hozzászóláshoz be kell jelentkezni
Egyebkent nem lenne egyszerubb valami self-hosted kulcsrakesz megoldas, Gitlab vagy hasonlo?
- A hozzászóláshoz be kell jelentkezni
GitTea , kics, gyors, stb..
- A hozzászóláshoz be kell jelentkezni
Sok +1 a gitea-ra. Sokkal kevesebb erőforrással beéri, és a dolgai a github megoldásaira hajaznak.
- A hozzászóláshoz be kell jelentkezni
2024-ben VSS, azt a k***a :). Beugrottak az emlékek rögtön (enyhe PTSD de inkább nosztalgia).
- A hozzászóláshoz be kell jelentkezni
2021-ben még telepítette 2019 Serverre egy Kolléga a volt munkehelyemen, a Magic Xpi (valamikori iBolt) csudával együtt, az akkor verzió (asszem 4.13) telepített egy Visual Studióra hajazó szerkesztöt, ami Java-ba forgatta az elkészült projektet és VSS-t használt verziózásra. Nem a legjobb élményeim között tartom számon.
Git-et természetesen nem tudott, hogy tudott-e más verziókezelöt VSS-en kivül, arról nincs információm.
Akkor nem tartottam különösebben érdekesnek hogy 64-bites szerverre telepítette a VSS-t, de ezek szerint kellett volna.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
gitolite-om van, és gyerekjáték a telepítése és az üzemeltetése is egy Linux szerveren néhány userig. A repón kívül mást nem ad, de azt tökéletesen tudja.
- A hozzászóláshoz be kell jelentkezni
Publikálj ki egy share-t smb-n a szerveren és ott annyi repository-t csinálsz git init --bare -rel a kliensedről amennyit szeretnél. (külön-külön könyvtárba természetesen)
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Tökéletes!
A megfelelő lépéseket beírom a nyitó bejegyzésbe.
- A hozzászóláshoz be kell jelentkezni
milyen sötllatségben van a hup git témakörben, jó ég :D
- A hozzászóláshoz be kell jelentkezni
Jujj, de jó!!! Végre egy szakértő!!!
Világosíts fel minket, tudatlanokat, kérlek!!!!
- A hozzászóláshoz be kell jelentkezni
Nezd meg a tobbi hozzaszolasat is. Kb. hasonlo volumenu. Ha nem lenne 19 eve regisztralt azt hinnem hajbi. Mondjuk lehet az apukaja, vagy a tesoja. :D
- A hozzászóláshoz be kell jelentkezni
Tök jó ez a fórum! Megint sokat tanultam a hozzászólásokból.
Nem is kell külön szervert üzemeltetnem a repónak, elég egy megosztott mappa valahol, ahova --bare paraméterrel tudom létrehozni a központi repót.... Teszteltem, működik.
Köszönöm mindenkinek!
- A hozzászóláshoz be kell jelentkezni