A munkád elküldése (push)
Amikor az asszisztens módosít egy repót, a commitjai a beszélgetés saját, privát munkaterületén maradnak — semmi nem jut el a git távolidra, amíg magad el nem küldöd. A küldés (push) sosem valami, amit az asszisztens saját magától megtesz: kizárólag a Küldés gombbal indítható, és az ehhez használt hitelesítő adat sosem jut el az asszisztenshez vagy a sandboxához.
Ez a funkció nem biztos, hogy minden beállításban elérhető. Ha nem látod a Küldés gombot a beszélgetés fejlécében, lehet, hogy a rendszergazdád nem engedélyezte.
A küldési párbeszédablak megnyitása
Kattints a Küldés gombra a fejlécben (vagy keskeny képernyőn a fejléc menüjében, ahol Küldés menüpontként jelenik meg). A gombon egy jelvény mutatja, hány commit vár küldésre; egy kis pont jelzi, ha egy repónak nem commitolt módosítása van. A gombra kattintva megnyílik a „Véglegesített munka küldése (push)” párbeszédablak. Ha több repónak is van mit mutatnia, mindegyik saját fület kap a cím alatt, egy kis jellel arról, hol tart: ↑ és egy szám a küldésre kész commitokhoz, figyelmeztető jel, ha beavatkozást igényel (az ág elmozdult, a küldést elutasították, nincs hitelesítő), üres kör, ha csak nem commitolt módosítás van, és pipa, ha elküldted. A fülek között a nyílbillentyűkkel lehet lépni.
Előbb a módosítások commitolása
Ha a beszélgetés munkaterületén nem commitolt módosítás van, a párbeszédablak ezt mutatja meg elsőként, egy Változások áttekintése panellel (a fájl diffje) és egy Commit gombbal. A Commit gombra kattintva egy chatüzenet megy az asszisztensnek, amelyben megkéred, hogy commitoljon — maga a küldés sosem commitol helyetted.
Ha egy munkaterület alvó állapotban van (például egy szerver-újraindítás után), a nem commitolt módosításai nem olvashatók, amíg újra nem aktiválódik. A párbeszédablak ezt jelzi is, ahelyett hogy azt állítaná, nincs mit commitolni; küldj egy üzenetet a beszélgetésben a munkaterület visszaállításához, majd commitolj.
A commitok áttekintése és elküldése
Minden küldésre kész commitokkal rendelkező repónál látod:
- Felül egy kis ábrát a küldésről: a commitjaid pontokként balra (Ez a munkamenet; az üres karikák a nem commitolt fájlok, ezek itt maradnak), egy vonalat jobbra, és a vonal végén a cél ágat az origin-on. A vonal mutatja, mi történik: szaggatottan halad, amíg a távoli ellenőrzése tart, küldés közben a pontok végigutaznak rajta, sikeres küldés után pedig zöldre vált, és a pontok megérkeznek az originra. Ha a rendszered csökkentett mozgásra van állítva, az ábra animáció nélkül változik.
- A cél ág a vonal végén álló lekerekített mező, előre kitöltve egy javasolt ágnévvel (vagy a beszélgetés eredeti ágával); kattints rá, ha másikat írnál be. Ha ez
main,mastervagytrunk, figyelmeztető keretet kap, és ha a munkamenet ilyen ágon indult, a párbeszédablak azt javasolja, hogy inkább egy új ágra küldj. - Az ábra alatt egy sort arról, mi történik; a hosszabb magyarázat (vagy a git saját kimenete) egy hivatkozás mögött van, például Mi változott? vagy Git kimenet megjelenítése.
- A commitok listáját (rövid SHA és tárgy).
- A Változások áttekintése / Változások elrejtése gombot, amely megnyitja a küldés által hozzáadott teljes diffet, a fájllistához pedig a Mind kinyitása / Mind összecsukása vezérlőket.
- A Kulcs jelmondat mezőt, amely csak akkor jelenik meg, ha a repó hitelesítője SSH kulcs — a küldéssel egyszer elküldve, sosem tárolva.
- Alul egyetlen gombot, amely pontosan megmondja, mit fog tenni, például 3 commit küldése: develop. Biztosan sikertelen műveletet nem kínál fel: küldési hitelesítő nélkül Küldési hitelesítő beállítása lesz belőle, elutasítás után pedig Újraellenőrzés.
Azok a repók, amelyeket valamelyik bővítmény önállóan kezel (például a szervezeti memória tudásbázisa), nem jelennek meg ebben a párbeszédablakban — azokat a bővítmény a saját ütemezése szerint commitolja és küldi, nem innen.
Amikor a távoli ág tovább haladt
Az itteni küldés mindig fast-forward: ebben a folyamatban sehol nincs force push opció. Ha valaki más is küldött a cél ágra, mióta a beszélgetésed elindult, a git elutasítja a küldést ahelyett, hogy felülírná, ami a távolin van, és a párbeszédablak három továbblépési lehetőséget kínál:
| Lehetőség | Mit csinál | Módosít a távolin? |
|---|---|---|
| Küldés új ágra | Egy friss, javasolt ágnévre küld, a továbbhaladt ágat érintetlenül hagyja | Csak egy új ágat ad hozzá |
| A távoli változások beolvasztása, majd küldés a(z) „‹ág›” ágra | Előnézetet ad az összefésülésről, majd (megerősítéskor) elküld egy host-oldalon épített merge commitot | Igen — merge commitot ad hozzá |
| A(z) „‹ág›” ág bevétele ebbe a munkamenetbe | Behozza a távoli ágat a beszélgetés saját munkaterületére, hogy az asszisztens a jelenlegi kóddal folytassa | Nem |
A három közül mindig ki van választva egy — amelyiket legutóbb választottad, különben az új ág —, és a felső ábra még a futtatás előtt újrarajzolódik: a cél ÚJ ‹ág› lesz, összefésülési jel kerül a vonalra, vagy a nyíl megfordul, és a munkamenetedre mutat.
Az összefésülési lehetőség („reconcile”) szándékosan két lépéses: az Összefésülés előnézete a párbeszédablakon belül egy külön oldalt nyit, amely pontosan megmutatja, mit adna hozzá az összefésülés, ütközés nélkül, mielőtt egy külön Összefésülés és küldés gomb megerősítené. Ha az összefésülés ütközik, nem ajánl fel összefésülő küldést — az oldal felsorolja az ütköző fájlokat, felajánlja a külön ágra küldést, és hivatkozik a munkaterület frissítésére (ez az egyetlen út, amelyhez feloldó tartozik). A Vissza gomb, a cím melletti nyíl vagy az Esc visszavisz a három lehetőséghez.
A munkaterület frissítése egyetlen kattintás, mivel semmit nem módosít a távolin, és egyszerű git-tel visszavonható. Ha ütközik, a párbeszédablak egy oldalt nyit az ütköző fájlokkal, és — csak egy további, kifejezett lépésként — felajánlja, hogy az asszisztens feloldja őket. Az asszisztens feloldása ezután diffként jelenik meg; olvasd át, és a Megtartom — vissza a küldéshez visszavisz a küldéshez, amely magával viszi az összefésülést.
Küldési előzmények
A párbeszédablak fejlécében az óra ikon nyitja meg a Küldési előzmények oldalt: a legutóbbi küldési kísérleteid az összes beszélgetésedből, a legújabbal kezdve, idővonalként. Minden bejegyzés megnevezi a repót, a cél ágat, a rövid SHA-t és az időpontot, és felsorolja a commitokat, amelyeket vitt (sikertelen kísérletnél azokat, amelyeket megpróbált vinni). A pont zöld egy küldésnél, üres zöld kör egy olyan küldésnél, amelynek commitját a fenti összefésülési lépés hozta létre („Összefésülve és elküldve”), és piros egy sikertelennél, amelynek git kimenete egy Git kimenet megjelenítése kattintásra van. A Vissza, a cím melletti nyíl vagy az Esc visszavisz a küldéshez.
Küldési hitelesítők beállítása
A küldési hitelesítők felhasználónként vannak beállítva, a Beállítások → SCM küldés menüben.
A Commit-azonosító az a név és e-mail, amelyet az asszisztens a nevedben készített commitokra ír. Először a profilodból van kitöltve; kattints az Azonosító mentése gombra a megerősítéshez (vagy a módosításhoz).
A Küldési hitelesítők egy repót (vagy egy globot, például team/*) kötnek egy csak host felhasználói titokhoz, és korlátozzák, mely ágakra küldhet — semmi ebből sosem jut el az asszisztenshez. Egy hozzáadásához:
- A Git szolgáltatódnál (Gitea/GitHub/GitLab) hozz létre egy hozzáférési tokent, amely írási joggal rendelkezik a repóhoz.
- Add hozzá a Beállítások → Felhasználói titkok menüben új titokként, „Csak host” bejelölve.
- Térj vissza a Beállítások → SCM küldés menübe, kattints a Hitelesítő hozzáadása gombra, válaszd ki a repót és ezt a titkot, majd mentsd el.
A tokenes hitelesítők HTTPS-en küldenek; a Codumentor automatikusan átalakítja az ssh:// távolit a HTTPS alakjára, így a Küldési URL mezőt általában üresen hagyhatod — csak felülíráshoz add meg.
SSH kulcs használata token helyett
Ha hitelesítési módként az SSH kulcs-ot választod, a titkot privát kulcsként olvassa be (a teljes PEM blokként) token helyett. Két dolog ennél a módnál más:
- Az Ismert hostok mező — a szerver SSH host-kulcs sorának beillesztése (az
ssh-keyscan -p <port> <host>paranccsal szerezhető meg) rögzíti azt, védve a kapcsolatot egy man-in-the-middle támadás ellen. Opcionális, de ajánlott. - A kulcs jelmondatát, ha van, magában a küldési párbeszédablakban add meg, küldéskor — sosem tárolva.
Az Engedélyezett ágak glob (pl. codumentor/, feature/) korlátozza, mely ágakra küldhet egy hitelesítő; hagyd üresen, ha bármely ágra engedélyezni akarod.
A küldés szándékosan kimarad az asszisztens saját kezéből: a git push a Jogosultságok szerint mindig hálózati hozzáférésnek számít, így ez sosem olyasmi, amit egy, az asszisztens által futtatott parancssori parancs megtehet — csak ez a párbeszédablak.