Hoppa till innehåll

Inbyggd git

Ett Restorm-projekt är gjort för att leva i ett git-förvar. Integrationen går längre än en enkel git commit: den förstår formatet och kan lösa en konflikt på verksamhetsentiteternas nivå, inte på YAML-radernas.

Det finns ingenting att konfigurera. Så snart den öppnade .restorm-filen ligger i ett git-förvar aktiveras git-ytorna.

Restorm använder din lokala git: inga inloggningsuppgifter att fylla i, ingen tokenhantering i applikationen. Regeln är enkel — om git push fungerar i din terminal fungerar det i Restorm. Git startas med frågorna avstängda: ett förvar som skulle be om ett lösenord misslyckas omedelbart med gits eget meddelande, i stället för att blockera gränssnittet.

Två knappar, Pusha och Hämta, var och en med en markering (en punkt, aldrig en siffra) när det finns något att skicka eller en nyare version att hämta.

Menyn Git i titelraden erbjuder samma åtgärder, plus Uppdatera, Återställ till serverns version och Historik.

GIT-cellen i statusfältet: Uppdatera, Pusha och Hämta, där de två sistnämnda bär en markering, och sedan Historik. Verktygstipset ”Push till förvaret” är öppet.

Push-dialogen visar ett färdigskrivet commit-meddelande, genererat deterministiskt från den strukturella diffen — utan någon språkmodell. En rad per ändrad entitet (begäran, scenario, mapp, variabelmapp), aldrig en rad per fält.

  • En språkväljare för meddelandet, oberoende av gränssnittets språk, med en växel för att göra det till standardvärde.
  • En redigerbar titel, med en vägledande räknare vid 72 tecken.
  • En flerradig brödtext.

Att bekräfta kör hela kedjan: spara, git add, commit, push.

Restorm sparar först, och hämtar och slår sedan samman.

Ren sammanslagning: trädet och de öppna flikarna uppdateras på plats.

Konflikt: en lösningsvy med fyra paneler öppnas.

Konfliktlösningsvyn med fyra paneler: listan över konflikter till vänster, din version, serverns version — de URL som skiljer sig är inramade i rött — och panelen ”Löst” ifylld efter att din version behållits.

PanelInnehåll
KonfliktlistanDe entiteter som är i konflikt
Din versionSkrivskyddad
Deras versionSkrivskyddad
LöstRedigerbar — det är den som skrivs

Det viktiga: varje panel visar entiteten i sin riktiga editor — en HTTP-begäran i HTTP-editorn, ett scenario i scenarioeditorn. Du löser inte <<<<<<<-markörer i YAML, du jämför två begäranden.

En knapp ”använd den här versionen” per sida, och de fält som skiljer sig markeras i rött — när bara ett fält skiljer sig öppnas panelen direkt på den berörda fliken.

API-dokumentationen i en variabelmapp löses automatiskt (den senaste versionen vinner).

Avbryt kör ett git merge --abort. Om du stänger applikationen mitt i en lösning erbjuder den dig vid nästa start att överge sammanslagningen.

Restorm kontrollerar regelbundet om det finns en nyare version — utan att någonsin slå samman av sig självt. Tre utlösare: en observerad ändring i .git, att en fil öppnas, och en timer vars frekvens ställs in i Inställningar ▸ Git (Off, 15 min, 30 min, 1 h, 4 h, 12 h, 24 h).

En avisering ”Uppdatering tillgänglig” erbjuder då Pull now.

Om filen har ändrats på disken sedan den öppnades nekas sparningen och Restorm frågar dig om du vill Läsa in på nytt eller Behålla din version.

Två egenskaper hos formatet, beskrivna i Projekt och .restorm-filer: en kanonisk nyckelordning, och identifierare som härleds på ett stabilt sätt.

Följd: att öppna och spara om utan att ändra något ger ingen diff alls, och två personer som lägger till samma begäran på samma plats får entiteter som sammanslagningen kan parhopa.

Git ▸ Historik öppnar en vy med två paneler: listan över commits med en grenrännil, och detaljerna till höger. En commits snabbmeny gör det möjligt att hämta tillbaka den versionen.

Fyra verktyg, i utgåvan Pro: git_commit_push (steg 1 av 2 — returnerar en granskningstoken, titeln, brödtexten och diffen per entitet, utan att skriva någonting), git_confirm_push (steg 2 av 2 — nekas om projektet har ändrats sedan granskningen), git_pull och git_resolve_conflicts.

Uppdelningen i två steg är avsiktlig: en agent kan inte pusha utan att en diff först har presenterats.