git

git ge­hört zu den Werk­zeu­gen, die aus mei­nem Ent­wick­ler­all­tag nicht mehr weg­zu­den­ken sind. Man kann mit git die un­glaub­lichs­ten Dinge ma­chen – al­ler­dings ist das dann mit­un­ter nicht mehr ganz ein­fach.

Ar­ti­kel über brauch­ba­re Knif­fe, prak­ti­sche Tricks oder die Lö­sung be­son­de­rer Pro­ble­me möch­te ich hier sam­meln.

Zwei git-Repositories zusammenführen

Aus zwei mach wieder eins (mit zwei Branches)

Ich hatte un­längst das Pro­blem, zwei se­pa­ra­te git-Re­po­si­to­ries zu einem zu­sam­men­zu­füh­ren. git hat per se kein Pro­blem damit, in un­ter­schied­li­chen Bran­ches voll­kom­men un­ter­schied­li­chen In­halt zu ver­wal­ten (ein Bei­spiel, wo das häu­fig ge­nutzt wird, ist der gh-pa­ges-Branch bei git­hub), aber ich woll­te etwas an­de­res: Beide Re­po­si­to­ries hat­ten eine ge­mein­sa­me Co­de­ba­sis, und ich woll­te nun ein Re­po­si­to­ry, das an der spä­test­mög­li­chen Stel­le einen Branch mit den Än­de­run­gen des an­de­ren Re­po­si­to­ries ab­zweigt.

git und https scheint sich hier zur „ne­ve­r­en­ding story“ zu mau­sern :-) Trotz­dem muß ich zu die­sem Thema noch­mals drin­gend etwas los­wer­den. Si­tua­ti­on: Ser­ver ist ein­ge­rich­tet, be­nutzt aber ent­we­der ein selbst­si­gnier­tes Zer­ti­fi­kat oder von einer CA, die nicht „all­ge­mein ver­brei­tet“ ist (Fir­men-CA, CA­cert, etc.). Folge: Git mel­det

Git­hub ist cool; et­li­che mei­ner Spie­le­rei­en habe ich dort in git-Re­pos ge­packt. Aber ir­gend­wie möch­te ich doch eine Kopie mei­ner Re­po­si­to­ries haben – am liebs­ten au­to­ma­tisch. An­fang des Jah­res habe ich ein Shell­skript ge­schrie­ben, um sol­che Mir­rors au­to­ma­tisch zu ak­tua­li­sie­ren – was aber den Nach­teil hat, daß man für ein neues Re­po­si­to­ry zu­nächst einen Mir­ror hän­disch an­le­gen muß.

Ich habe ein paar mei­ner Pro­jek­te auf git­hub ge­legt; al­ler­dings hätte ich doch gerne die Daten der Re­po­si­to­ries auf mei­nem Ser­ver - da bin ich ir­gend­wie eigen :-) Die Sache sieht so aus, daß ich in einem Ver­zeich­nis eine Reihe .git-Ver­zeich­nis­se (also bare Re­po­si­to­ries) lie­gen habe; ei­ni­ge davon sind die Mir­rors von git­hub, an­de­re sind ei­gen­stän­di­ge Re­po­si­to­ries. Die Mir­rors woll­te ich per Cron­job täg­lich ak­tua­li­sie­ren. Wie's geht, habe ich hier kurz zu­sam­men­ge­schrie­ben:

Für ein neues (ge­schäft­li­ches) Pro­jekt fiel die Wahl für das Ver­si­ons­kon­troll­sys­tem auf git. Un­glück­li­cher­wei­se sind die ein­zi­gen Pro­to­kol­le, was sämt­li­che Fir­men­fire­walls (halb­wegs) un­be­scha­det pas­sie­ren, http und https. Als wei­te­re Si­che­rungs­maß­nah­me soll die Au­then­ti­sie­rung über Cli­ent-Zer­ti­fi­ak­te er­fol­gen.