You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: external/book/content/book/sv/v2/Anpassa-Git-Ett-exempel-på-Git‑upprätthållen-policy.html
+5-5Lines changed: 5 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ <h3 id="_krok_på_serversidan">Krok på serversidan</h3>
49
49
</div>
50
50
<divclass="paragraph">
51
51
<p>Du har också tillgång till användaren som skickar upp om uppskickningen körs över SSH.
52
-
Om du har tillåtit alla att ansluta med en enda användare (som “git”) via publika nycklar kan du behöva ge den användaren ett skalomslag som avgör vilken användare som ansluter baserat på den publika nyckeln, och sätta en miljövariabel därefter.
52
+
Om du har tillåtit alla att ansluta med en enda användare (som “git”) via publika nycklar kan du behöva ge den användaren ett skalomslag som avgör vilken användare som ansluter utifrån den publika nyckeln, och sätta en miljövariabel därefter.
53
53
Här antar vi att anslutande användare ligger i miljövariabeln <code>$USER</code>, så ditt update‑skript börjar med att samla in all information du behöver:</p>
<h3id="_krokar_på_klientsidan_2">Krokar på klientsidan</h3>
344
344
<divclass="paragraph">
345
-
<p>Nackdelen med detta angreppssätt är det gnäll som ofrånkomligen uppstår när användarnas uppskick av incheckningar nekas.
345
+
<p>Nackdelen med detta angreppssätt är det gnäll som ofrånkomligen uppstår när användare nekas att skicka upp sina incheckningar.
346
346
Att få sitt omsorgsfullt skapade arbete nekat i sista stund kan vara extremt frustrerande och förvirrande; dessutom måste de redigera sin historik för att rätta det, vilket inte alltid är för den lättskrämde.</p>
347
347
</div>
348
348
<divclass="paragraph">
@@ -462,15 +462,15 @@ <h3 id="_krokar_på_klientsidan_2">Krokar på klientsidan</h3>
462
462
</div>
463
463
<divclass="paragraph">
464
464
<p>Men det är de enda två skillnaderna – i övrigt fungerar skriptet på samma sätt.
465
-
En varning är att det förutsätter att du kör lokalt som samma användare som du skickar upp som till fjärrmaskinen.
465
+
Tänk på att det förutsätter att du kör lokalt som samma användare som du skickar upp som till fjärrmaskinen.
466
466
Om det skiljer sig måste du sätta variabeln <code>$user</code> manuellt.</p>
467
467
</div>
468
468
<divclass="paragraph">
469
469
<p>En annan sak vi kan göra här är att se till att användaren inte skickar upp icke‑snabbspolade referenser.
470
470
För att få en referens som inte är en snabbspolning måste du antingen ombasera förbi en incheckning du redan har skickat upp eller försöka skicka en annan lokal gren till samma fjärrgren.</p>
471
471
</div>
472
472
<divclass="paragraph">
473
-
<p>Förmodligen är servern redan konfigurerad med <code>receive.denyDeletes</code> och <code>receive.denyNonFastForwards</code> för att upprätthålla den policyn, så det enda oavsiktliga du kan försöka fånga är ombasering av incheckningar som redan har skickats upp.</p>
473
+
<p>Förmodligen är servern redan konfigurerad med <code>receive.denyDeletes</code> och <code>receive.denyNonFastForwards</code> för att upprätthålla den policyn, så det enda oavsiktliga du kan försöka fånga är att incheckningar som redan skickats upp ombaseras.</p>
474
474
</div>
475
475
<divclass="paragraph">
476
476
<p>Här är ett exempel på ett pre‑ombasering‑skript som kontrollerar det.
Om du har använt nyckelordssubstitution i CVS eller Subversion kan du inkludera en datumstämpel – SHA‑1:an är inte särskilt hjälpsam, eftersom den är ganska slumpmässig och du kan inte se om en SHA‑1 är äldre eller nyare än en annan bara genom att titta på dem.</p>
237
237
</div>
238
238
<divclass="paragraph">
239
-
<p>Det visar sig att du kan skriva egna filter för att göra substitutioner i filer vid incheckning/utläggning.
239
+
<p>Du kan också skriva egna filter för att göra substitutioner i filer vid incheckning/utläggning.
240
240
Dessa kallas “clean”‑ och “smudge”‑filter.
241
241
I <code>.gitattributes</code>‑filen kan du sätta ett filter för vissa sökvägar och sedan sätta upp skript som bearbetar filer strax innan de läggs ut (“smudge”, se <ahref="{{< relurl "book/sv/v2/ch00/filters_a" >}}">“smudge”‑filtret körs vid utläggning</a>) och strax innan de köas (“clean”, se <ahref="{{< relurl "book/sv/v2/ch00/filters_b" >}}">“clean”‑filtret körs när filer köas</a>).
242
242
Dessa filter kan ställas in för att göra många olika saker.</p>
Ett mycket användbart alternativ är att tala om för Git att inte försöka sammanfoga vissa filer när de har konflikter, utan i stället använda din sida av sammanslagningen framför någon annans.</p>
423
423
</div>
424
424
<divclass="paragraph">
425
-
<p>Det här är hjälpsamt om en gren i projektet har glidit isär eller är specialiserad, men du vill kunna sammanfoga in ändringar från den och samtidigt ignorera vissa filer.
425
+
<p>Det hjälper om en gren i projektet har glidit isär eller är specialiserad, men du vill kunna sammanfoga in ändringar från den och samtidigt ignorera vissa filer.
426
426
Säg att du har en databasinställningsfil som heter <code>database.xml</code> som är olika i två grenar, och du vill sammanfoga den andra grenen utan att stöka till databasfilen.
<p>Hittills har vi gått igenom grunderna i hur Git fungerar och hur man använder det, och vi har introducerat flera verktyg som Git erbjuder för att hjälpa dig använda det enkelt och effektivt.
22
-
I kapitlet ser vi hur du kan få Git att arbeta mer skräddarsytt genom att introducera ett antal viktiga konfigurationsinställningar och krokssystemet.
22
+
I kapitlet ser vi hur du kan få Git att arbeta mer skräddarsytt genom att introducera flera viktiga konfigurationsinställningar och krokssystemet.
23
23
Med dessa verktyg är det lätt att få Git att fungera precis som du, din organisation eller ditt team behöver.</p>
<p>Konfigurationsalternativen som Git känner igen delas in i två kategorier: klientsidan och serversidan.
75
-
Majoriteten av alternativen är på klientsidan – konfiguration av dina personliga arbetsvanor.
75
+
Majoriteten av alternativen är på klientsidan – de styr dina personliga arbetsvanor.
76
76
Många, <em>många</em> konfigurationsalternativ stöds, men en stor del av dem är bara användbara i vissa kantfall; här går vi igenom de vanligaste och mest användbara alternativen.
77
77
Om du vill se en lista över alla alternativ som din version av Git känner igen kan du köra:</p>
78
78
</div>
@@ -383,7 +383,7 @@ <h3 id="_external_merge_tools">Externa sammanslagnings- och diffverktyg</h3>
383
383
</div>
384
384
<divclass="paragraph">
385
385
<p>Nu kan du konfigurera din konfigurationsfil att använda din anpassade sammanslagningslösning och diffverktyg.
386
-
Detta kräver ett antal egna inställningar: <code>merge.tool</code>för att tala om för Git vilken strategi som ska användas, <code>mergetool.<tool>.cmd</code>för att ange hur kommandot körs, <code>mergetool.<tool>.trustExitCode</code>för att tala om för Git om exit‑koden från programmet indikerar en lyckad sammanslagning eller inte, och <code>diff.external</code>för att tala om för Git vilket kommando som ska köras för diffar.
386
+
Detta kräver flera egna inställningar: <code>merge.tool</code>talar om för Git vilken strategi den ska använda, <code>mergetool.<tool>.cmd</code>anger hur kommandot körs, <code>mergetool.<tool>.trustExitCode</code>talar om för Git om exit‑koden från programmet indikerar en lyckad sammanslagning eller inte, och <code>diff.external</code>talar om för Git vilket kommando den ska köra för diffar.
387
387
Så du kan antingen köra fyra config‑kommandon:</p>
388
388
</div>
389
389
<divclass="listingblock">
@@ -430,7 +430,7 @@ <h3 id="_external_merge_tools">Externa sammanslagnings- och diffverktyg</h3>
430
430
<p>Om du försöker sammanfoga två grenar och därefter får sammanslagningskonflikter kan du köra kommandot <code>git mergetool</code>; det startar P4Merge så att du kan lösa konflikterna med det grafiska verktyget.</p>
431
431
</div>
432
432
<divclass="paragraph">
433
-
<p>Det fina med denna omslagsuppsättning är att du lätt kan byta diff‑ och sammanslagningsverktyg.
433
+
<p>Med den här omslagsuppsättningen kan du lätt byta diff‑ och sammanslagningsverktyg.
434
434
Till exempel, för att byta dina <code>extDiff</code>‑ och <code>extMerge</code>‑verktyg till att köra KDiff3 i stället räcker det att redigera din <code>extMerge</code>‑fil:</p>
<p>Det finns inte i närheten lika många konfigurationsalternativ på serversidan av Git, men det finns några intressanta du kan vilja lägga märke till.</p>
598
+
<p>Det finns inte i närheten lika många konfigurationsalternativ på serversidan av Git, men det finns några intressanta värda att känna till.</p>
<p>Detta nekar all radering av grenar eller taggar — ingen användare kan göra det.
647
+
<p>Detta hindrar att grenar eller taggar raderas — ingen användare kan göra det.
648
648
För att ta bort fjärrgrenar måste du ta bort ref‑filerna på servern manuellt.
649
649
Det finns också mer intressanta sätt att göra detta per användare via ACL:er, som du kommer att lära dig i <ahref="{{< relurl "book/sv/v2/ch00/_an_example_git_enforced_policy" >}}">Ett exempel på Git‑upprätthållen policy</a>.</p>
Copy file name to clipboardExpand all lines: external/book/content/book/sv/v2/Anpassa-Git-Git‑krokar.html
+11-11Lines changed: 11 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -32,7 +32,7 @@ <h3 id="_installera_en_krok">Installera en krok</h3>
32
32
<p>Alla krokar lagras i underkatalogen <code>hooks</code> i Git‑katalogen.
33
33
I de flesta projekt är det <code>.git/hooks</code>.
34
34
När du initierar ett nytt kodförråd med <code>git init</code> fyller Git krok‑katalogen med en uppsättning exempelskript, varav många är användbara i sig själva; de dokumenterar också vilka indata varje skript får.
35
-
Alla exempel är skrivna som skalskript, med lite Perl insprängt, men alla korrekt namngivna körbara skript fungerar – du kan skriva dem i Ruby, Python eller vilket språk du nu är bekväm med.
35
+
Alla exempel är skrivna som skalskript, med lite Perl insprängt, men alla korrekt namngivna körbara skript fungerar – du kan skriva dem i Ruby, Python eller vilket språk du är van vid.
36
36
Om du vill använda de medföljande krok‑skripten behöver du byta namn på dem; deras filnamn slutar med <code>.sample</code>.</p>
37
37
</div>
38
38
<divclass="paragraph">
@@ -65,7 +65,7 @@ <h3 id="_krokar_på_klientsidan">Krokar på klientsidan</h3>
65
65
<divclass="sect4">
66
66
<h4id="_krokar_för_incheckningsflödet">Krokar för incheckningsflödet</h4>
67
67
<divclass="paragraph">
68
-
<p>De första fyra hooksen har att göra med incheckningsprocessen.</p>
68
+
<p>De första fyra krokarna gäller incheckningsprocessen.</p>
69
69
</div>
70
70
<divclass="paragraph">
71
71
<p>Kroken <code>pre-commit</code> körs först, innan du ens skriver in ett incheckningsmeddelande.
@@ -78,11 +78,11 @@ <h4 id="_krokar_för_incheckningsflödet">Krokar för incheckningsflödet</h4>
78
78
Den låter dig redigera standardmeddelandet innan författaren ser det.
79
79
Kroken tar några parametrar: sökvägen till filen som innehåller incheckningsmeddelandet hittills, typen av incheckning och incheckningens SHA‑1 om det gäller en ändrad incheckning.
80
80
Denna krok är i allmänhet inte användbar för normala incheckningar; snarare är den bra för incheckningar där standardmeddelandet genereras automatiskt, såsom mallade incheckningsmeddelanden, sammanslagningsincheckningar, sammanfogade incheckningar och ändrade incheckningar.
81
-
Du kan använda den tillsammans med en incheckningsmall för att programatiskt infoga information.</p>
81
+
Du kan använda den tillsammans med en incheckningsmall för att automatiskt infoga information.</p>
82
82
</div>
83
83
<divclass="paragraph">
84
84
<p>Kroken <code>commit-msg</code> tar en parameter, vilket återigen är sökvägen till en temporär fil som innehåller incheckningsmeddelandet som utvecklaren har skrivit.
85
-
Om detta skript avslutas med en icke‑nollkod avbryter Git incheckningsprocessen, så du kan använda det för att validera projektets läge eller incheckningsmeddelandet innan incheckningen får gå igenom.
85
+
Om detta skript avslutas med en icke‑nollkod avbryter Git incheckningsprocessen, så du kan använda det för att kontrollera projektets läge eller incheckningsmeddelandet innan incheckningen får gå igenom.
86
86
I sista delen av kapitlet visar vi hur du använder denna krok för att kontrollera att incheckningsmeddelandet följer ett obligatoriskt mönster.</p>
87
87
</div>
88
88
<divclass="paragraph">
@@ -120,13 +120,13 @@ <h4 id="_email_hooks">Krokar för e‑postflöde</h4>
120
120
<h4id="_other_client_hooks">Andra krokar på klientsidan</h4>
121
121
<divclass="paragraph">
122
122
<p>Kroken <code>pre-rebase</code> körs innan du ombaserar något och kan stoppa processen genom att avslutas med en icke‑nollkod.
123
-
Du kan använda denna krok för att förhindra ombasering av incheckningar som redan har skickats upp.
123
+
Du kan använda denna krok för att förhindra att incheckningar som redan skickats upp ombaseras.
124
124
Exempelkroken <code>pre-rebase</code> som Git installerar gör detta, även om den gör vissa antaganden som kanske inte matchar ditt arbetsflöde.</p>
125
125
</div>
126
126
<divclass="paragraph">
127
127
<p>Kroken <code>post-rewrite</code> körs av kommandon som ersätter incheckningar, såsom <code>git commit --amend</code> och <code>git rebase</code> (men inte av <code>git filter-branch</code>).
128
128
Dess enda argument är vilket kommando som utlöste omskrivningen, och den tar emot en lista över omskrivningar på <code>stdin</code>.
129
-
Denna krok har många av samma användningar som hooksen<code>post-checkout</code> och <code>post-merge</code>.</p>
129
+
Denna krok har många av samma användningar som krokarna<code>post-checkout</code> och <code>post-merge</code>.</p>
130
130
</div>
131
131
<divclass="paragraph">
132
132
<p>Efter att du har kört en lyckad <code>git checkout</code> körs kroken <code>post-checkout</code>; du kan använda den för att ställa in din arbetskatalog korrekt för projektets miljö.
@@ -135,16 +135,16 @@ <h4 id="_other_client_hooks">Andra krokar på klientsidan</h4>
135
135
<divclass="paragraph">
136
136
<p>Kroken <code>post-merge</code> körs efter en lyckad <code>merge</code>.
137
137
Du kan använda den för att återställa data i arbetsträdet som Git inte kan spåra, såsom behörighetsdata.
138
-
Kroken kan också validera att filer som ligger utanför Gits kontroll finns på plats, sådant du vill kopiera in när arbetsträdet förändras.</p>
138
+
Kroken kan också kontrollera att filer som ligger utanför Gits kontroll finns på plats, sådant du vill kopiera in när arbetsträdet förändras.</p>
139
139
</div>
140
140
<divclass="paragraph">
141
141
<p>Kroken <code>pre-push</code> körs under <code>git push</code>, efter att fjärrreferenserna uppdaterats men innan några objekt har överförts.
142
142
Den tar namnet och platsen för fjärrkodförrådet som parametrar, samt en lista över referenser som ska uppdateras via <code>stdin</code>.
143
-
Du kan använda den för att validera uppsättningen referensuppdateringar innan en uppskickning sker (en icke‑nollkod avbryter uppskickningen).</p>
143
+
Du kan använda den för att kontrollera uppsättningen referensuppdateringar innan en uppskickning sker (en icke‑nollkod avbryter uppskickningen).</p>
144
144
</div>
145
145
<divclass="paragraph">
146
146
<p>Git gör ibland skräpsamling som en del av sin normala drift, genom att anropa <code>git gc --auto</code>.
147
-
Kroken <code>pre-auto-gc</code> anropas precis innan skräpsamlingen sker, och kan användas för att meddela dig att detta händer, eller för att avbryta samlingen om det inte är ett bra tillfälle.</p>
147
+
Kroken <code>pre-auto-gc</code> anropas precis innan skräpsamlingen sker, och kan meddela dig att detta händer, eller avbryta samlingen om det inte är ett bra tillfälle.</p>
148
148
</div>
149
149
</div>
150
150
</div>
@@ -153,7 +153,7 @@ <h3 id="_krokar_på_serversidan">Krokar på serversidan</h3>
153
153
<divclass="paragraph">
154
154
<p>Utöver krokar på klientsidan kan du använda ett par viktiga krokar på serversidan som systemadministratör för att upprätthålla nästan vilken policy som helst för ditt projekt.
155
155
Dessa skript körs före och efter uppskickningar till servern.
156
-
Pre‑hooksen kan avslutas med en icke‑nollkod när som helst för att neka uppskickningen och skriva ett felmeddelande tillbaka till klienten; du kan sätta upp en uppskickningspolicy som är så komplex som du vill.</p>
156
+
Pre‑krokarna kan avslutas med en icke‑nollkod när som helst för att neka uppskickningen och skriva ett felmeddelande tillbaka till klienten; du kan sätta upp en uppskickningspolicy som är så komplex som du vill.</p>
<p>Kroken <code>post-receive</code> körs efter att hela processen är klar och kan användas för att uppdatera andra tjänster eller meddela användare.
178
+
<p>Kroken <code>post-receive</code> körs efter att hela processen är klar och kan uppdatera andra tjänster eller meddela användare.
179
179
Den tar samma stdin‑data som kroken <code>pre-receive</code>.
180
180
Exempel är att skicka e-post till en lista, meddela en CI‑server eller uppdatera ett ärendehanteringssystem – du kan till och med analysera incheckningsmeddelanden för att se om ärenden behöver öppnas, modifieras eller stängas.
181
181
Detta skript kan inte stoppa uppskickningsprocessen, men klienten kopplar inte ned förrän det är klart, så var försiktig om du försöker göra något som kan ta lång tid.</p>
0 commit comments