Weekend Prosjekt: Bruke git Behandle Config Files


Hvis du har brukt Linux en stund, har du sannsynligvis noen finstemt konfigurasjonsfiler for Bash, Vim, Emacs, eller andre programmer. Holde orden på disse filene manuelt, og kopiere dem til andre maskiner når du setter opp nye systemer, kan være smertefullt. Ta kontroll over dine config filer på Linux ved hjelp git å spore endringer og flytte configs til nye systemer.

Vanligvis bruker jeg Dropbox å synkronisere filene mine for arbeid, men Dropbox er ikke en god løsning for filene under /etc eller .config typen filer under hjemmekatalogen. Du kan piske opp noen hacks for å kompensere for dette, men det andre problemet er at Dropbox er ikke en god løsning når du ønsker å trekke config filer til en ny maskin – og bare disse filene.

En annen løsning ville være å bruke rsync, Duplicity, eller Unison. Men jeg ønsker å beholde versjoner av filen – ikke bare ett eksemplar. Så git (eller en annen versjon kontrollsystem) er det rette svaret – i hvert fall for meg, og sannsynligvis for ganske mange andre folk.

Den andre grunnen til at jeg valgte git er fordi jeg har få muligheter til å arbeide med git, og følte at jeg bør bruke mer tid på å jobbe med det. Bivirkning her er at git mestere kan ha mer effektive måter å gjøre noen av disse tingene, men jeg er først og fremst prøver bare å legge ned et enkelt sett med instruksjoner som vil fungere for folk som ikke er git eksperter. Hvis du har ideer om hvordan man kan forbedre arbeidsflyten, skjønt, kan du gjerne legge inn kommentarer!

Her er hva vi skal dekke, og trinnene du må ta for å begynne å bruke git å administrere dine config filer..

Sette opp SSH nøkler slik at du kan bruke git uten å måtte bruke et passord

Installere git på alle maskiner du bruker
< li> Opprette en " bare " depotet på den eksterne maskinen.

Opprette et depot på den lokale maskinen du vil synkronisere.

Legge til filer i depotet.

binde til depotet.

Pushing å fjernlager.

Å gjøre en endring, og du forplikter det.

Kloning repo til en annen maskin.

Komme i gang Anmeldelser

Første ting først, du kommer til å trenge å ha en maskin som fungerer som git repository, og være i stand til å koble til den maskinen via SSH. Det kan være en maskin på lokalnettet, kan det være en ekstern maskin (jeg bruker en VPS vert Linode, som jeg også bruke for min nettside), eller du kan bruke en tjeneste som Github. Du vil finne noen greie, ganske grunnleggende, instruksjoner for bruk Github for config filer – men jeg ønsker ikke å stole på Github for mine konfigurasjonsfiler.

Trinn en er å ha en SSH-tasten og få den satt opp på den eksterne verten. Bruk ssh-keygen -t dsa å skape en DSA nøkkel, eller bare ssh-keygen for å bruke standard. Jeg vet ikke oppgi et passord, slik at du kan logge inn bare ved hjelp av nøkkelen uten passphrase. Dette betyr hvis noen har fysisk tilgang til maskinen din, de har fysisk tilgang til eksterne maskiner også – vær forsiktig. Hvis du har noe spesielt følsomme i git eller på den bærbare datamaskinen (e), vil jeg sterkt anbefale å kryptere ditt hjem partisjon. Det er litt utenfor omfanget av denne artikkelen, selvfølgelig.

Nå må du kopiere den til den eksterne verten. Det er lurt å kopiere nøkkelen til ~ /.ssh /authorized_keys, som du kan gjøre med ssh-copy-id Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se adressen hvis du er på Ubuntu /Debian-baserte systemer. Andre distroer kan ikke ha det script, så du må scp den ~ /.ssh /id_dsa.pub eller ~ /.ssh /id_rsa.pub til den eksterne maskinen og kopiere den til ~ /.ssh /authorized_keys. Legg merke til at du bør bruke cp id_rsa.pub > > ~ /.ssh /authorized_keys til append
filen i stedet for å overskrive den, forutsatt at du har andre taster.

Naturligvis du kommer til å trenge å ha git installert på systemene også. For Ubuntu /Debian-brukere bør dette være git-core pakken.

Opprette Resurser

Nå er det tid for å lage de repositories. Vi kommer til å starte med fjern depotet, så får vi begynne med depotet på den lokale maskinen og deretter legge til filer. For å opprette fjernlager, SSH til maskinen og deretter opprette en katalog å holde repo og lage en " bare " depotet:


 mkdir projectcd projectgit init --bare 

Enkelt, ja? Nå på din lokale maskin du kommer til å sette opp repo for konfigurasjonsfiler og legge noen filer som skal spores av git. Nå, normalt hvis du jobber på et prosjekt du vil opprette en katalog på den lokale maskinen og starte fra scratch – men her, du vil spore eksisterende filer. Ved anvendelsen av denne artikkelen, jeg kommer til å bruke min .vimrc og .vim katalogen

 


 git config --global user.name ". Your Name " git config --global user.email Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se cd ~ /git legge .vimrcgit legge .vimgit commit -m 'First Commit'git fjern legge opprinnelse bruker @ fjern: projectgit presse opprinnelse mester 


La oss gå gjennom kommandoene her. Jeg brukte git sin config-kommandoen til å sette mitt navn og e-postadresse. Strengt tatt er dette ikke nødvendig, men det er en god idé.

Så jeg cd'ed til min hjemmekatalog, og deretter lagt min .vimrc og .vim katalogen. Du kan også legge til noen andre config filer du ønsker å spore. Legg merke til at å legge en katalog vil spore hele katalog. Hva om alt annet under hjemmekatalogen? Git vil ikke spore disse filene

Naturligvis vil du erstatte ". Bruker " med ditt brukernavn og " fjern " med navnet på den eksterne maskinen, og " prosjektet " med det navnet du har gitt ditt prosjekt.

Kopiere Konfig og Gjøre endringer

Neste jeg gjør det første begå, og deretter lagt fjern depotet, deretter dyttet forplikte til bart depotet. Nå er det på tide å lære å gjøre endringer og å fange din config filer på nye maskiner

La oss starte med en enkel endring &mdash.; foreta et en-linje endring i .vimrc eller annen konfigurasjonsfil. Deretter gå videre og forplikte endringen:


 git commit -a -m 'Liten endring i vimrc'git presse opprinnelse mester 


Du burde se noe sånt dette:


 Telle objekter: 5, done.Delta komprimering med opptil 2 threads.Compressing objekter: 100% (3/3), done.Writing objekter: 100% (3 /3), 318 bytes, done.Total 3 (delta 1), gjenbrukt 0 (delta 0) til Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se den: gitconfig 366a106..9bf6cdf mester - > Hoved 


Nå som du har synkronisert det, er det på tide å trekke skifter til en annen maskin og sette den opp. Igjen — du kommer til å ønske å ha din SSH nøkkel satt opp slik at du kan trekke /presse til din git repository uten travelhet med passordet:


 cd ~ /git initgit trekke bruker @ fjern: projectgit fjern legge opprinnelse bruker @ fjern: prosjekt 


Og det er det! Ønsker å gjøre endringer? Bruk samme git commit og git push-kommandoer vi allerede har brukt.

Legg merke til at du ikke kommer til å bruke git clone her, fordi det ville gi oss en kopi av hele katalogen i stedet for å plassere konfigurasjonen filer der du vil ha dem (i hjemmeområdet). Du kan også gjenskape dette med din /etc katalogen eller andre filer eller mapper du ønsker å administrere.

Vil du se hva alle filer er for tiden under git kontroll? Bruk git LS-filer.

Hvis du har gjort en endring i en config fil og ønsker å rulle den tilbake til den gjeldende versjonen som er i fjernlager? Bruk git checkout filnavn
.

Til slutt, du kan gå tilbake til tidligere tilstander også. Du kan bruke git log for å se alle dine inger. Du vil se omtrent slik ut:


 begå 9bf6cdfa61950afc5eb95d9d5b68c4bd1c9653b2Author: Joe Brockmeier < Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se > Dato: Fre 15 april 12:14:53 2011 -0500 mindre vimrc changecommit 366a106005f73750bfa1bbfab91e6118c49df184Author: Joe Brockmeier < Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se > Dato: Fre 15 april 11:53:03 2011 -0500 endrede vimrc 


For å gå tilbake til en tidligere begå, kjøre git tilbake rev Anmeldelser der " rev " er den lange strengen etter begå linje (som " 366a106005f73750bfa1bbfab91e6118c49df184 ").

Sammendrag

Mens git ikke kan være den mest slutt brukervennlig verktøy, det er virkelig ikke vanskelig å bli kjent med . Dette prosjektet begynner ikke å dekke alle git funksjonalitet. Jeg har glattet over, for eksempel, forgrening og merking – som kan være nyttig, men litt utenfor rammen av hva jeg prøver å dekke her. Ikke bekymre deg – vi får de i en annen artikkel.

Weekend prosjekt lekser? Sett opp din egen git repository og begynne å administrere dine config filer. Det er en god måte å raskt og enkelt å sette opp nye maskiner, og for katastrofegjenoppretting. Anmeldelser