2012-02-14 18 views
14

Mi è stato assegnato il compito di creare Git per il mio ufficio. Abbiamo diversi siti. Ho appena installato un drive di rete per farci cambiare le nostre modifiche. La mia domanda è: dove devo iniziare il repository Git?Git Setup Best practice

  1. Nuova dir + init per ogni sito?
  2. Un init nella nuova unità & e ogni dir un altro sito?
  3. Qualcos'altro meglio di quello che mi manca?

Chiedo consiglio a tutti e tutti, soprattutto se hai maledetto il primo ragazzo a configurarlo chiedendo "PERCHE '?

+5

Se sei un novizio completo: come in questo mondo potrebbero affidarti questo compito? Chi ha deciso di prendere in giro quando anche il ragazzo che deve installarlo non ha assolutamente alcuna conoscenza del sistema ??? – eckes

+1

Piccola squadra di sviluppo, tutti indossiamo molti cappelli ... la mia domanda iniziale esattamente. – rpophessagr

+1

@rpophessagr - È la prima volta che ho visto questo poema di E.E. Cummings riferito da chiunque. L'ho persino usato come nome utente per me occasionalmente. Freddo! –

risposta

4

È una questione di preferenza se preferisci avere tutte le basi di codice in un repository git, o ciascuna nella propria. Detto questo, la mia preferenza sarebbe un repository git per codice base/sito. In questo modo puoi lavorare su un singolo sito senza dover controllare gli altri e non dovrai preoccuparti delle modifiche agli altri siti che potrebbero ostacolare qualsiasi commit che potresti spingere su un determinato sito.

+0

Grazie, ha senso. – rpophessagr

+1

Se è necessario essere in grado di modificare le versioni di una cosa, senza influire su un'altra, è necessario che si trovino in repository separati: non è una questione di preferenza. – Cascabel

36

La struttura dei pronti contro termine, non è una questione se siti (quello che vuoi dire con questo), ma una questione di progetti.

Come regola empirica:

  • utilizzare una (bare, benedetto) repo per ciascun progetto indipendente
  • se i moduli comuni sono condivisi, realizzano con submodules

All'interno di ciascun repo, strutturare il lavoro con branches e fare non confondere i rami con i mezzi di organizzazione di diversi stack software: i rami vengono utilizzati per organizzare il lavoro in o ne repo (es. diverse stringhe di sviluppo di UN software). Una ramificazione del modello (che sembra essere molto popolare qui a SO) è questa:

enter image description here

Confuso? Curioso? Leggi il explanation ...

+0

Grazie! Per sottomoduli intendi rami? o qualcos'altro? – rpophessagr

+1

+1 per bare repo ('git init --bare') - sicuramente un must per l'ambiente OP, da come sembra. –

+0

Grandi articoli, grazie! – rpophessagr

1

Probabilmente si desidera avere un server centralizzato da cui si inviano le modifiche e si clona. Questo server può avere un repository o molti. Raccomando di leggere http://sethrobertson.github.com/GitBestPractices/ che ha diverse sezioni di interesse diretto. Scegli in particolare un flusso di lavoro locale, un flusso di lavoro distribuito e come dividere il tuo lavoro in repository.

2

Consiglierei la gitolite se si ospita il repository internamente. Si aggiunge un repository centrale semplicemente cambiando il file di confusione.

A meno che non si stia sviluppando cross-platform, impostare auto crlf su false.

Gestisci rami in questo modo:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

0

Impostazioni di base

vorrei suggerire di creare una directory dedicata a git su un server.

Ho utilizzato il nome della directory /git su un server gestito dalla mia azienda per attività correlate al lavoro e per uso personale ho anche creato una directory denominata /git su un server Web privato.

All'interno della vostra directory/git è possibile quindi creare repository nudi per i vostri progetti

ssh [email protected] 
cd /git 
mkdir Project7sName.git 
cd Project7sName.git 
git init --bare 
echo "Take over the world project" > description 

Aggiungere un visualizzatore

Quindi è possibile installare qualcosa di simile GitList sul server per consentire le modifiche software per essere ben vista -avere, ad es delezioni in rosso e inserimenti in verde.

GitList example image

Distributed Version Control?

Git è un sistema di controllo versione distribuito. Quindi potresti voler farlo in diversi siti. I vantaggi sono quindi che se in qualsiasi momento perdi la connessione ad altri siti, puoi continuare a lavorare senza interruzioni. Inoltre, se si verificano guasti del disco rigido o problemi analoghi, sono disponibili più copie dei dati.

È possibile nominare un sito come sito principale se si desidera che le persone debbano sempre eseguire il push, oppure le pratiche di lavoro potrebbero essere quelle che si spostano su tutti i siti del server.

Fare uso di comandi come

git remote add siteA ssh://[email protected]/git/repositoryX.git 

in modo da poter poi fare le cose come

git push siteA master 
git push siteB master 

Ho uno script di backup che funziona tutti i giorni, tirando da GitHub, dalla nostra gitserver, un NAS guidare, un'unità USB e spingendo a ciascuno di essi.

In questo modo, ci sono due metodi per garantire che ci siano più copie di una modifica del software.

  1. dall'utente (spingendo a più siti) e
  2. dalla somministrazione (copiando le modifiche tra i siti).

Iniziare configurando Git su un server e aggiungendo qualcosa come GitList per visualizzare le modifiche in modo corretto.

Dopo aver compreso correttamente i passaggi necessari, è possibile ripeterli su un altro sito, se lo si desidera, come e quando si sceglie.

Importare vecchi progetti?

Come amministratore di sistema, potresti voler importare vecchi progetti in Git.

È possibile eseguire questa operazione impegnando un repository vuoto.

git touch .gitignore 
git add .gitignore 
git commit -m Empty 

E poi ripetutamente decomprimere versioni archiviate di un progetto in una directory del progetto (svuotato a parte i file Git) e commettendo lo stato archiviato.

rm * 
unzip ... 
git add * 
git commit -m "Archived state 2013 week 18" 
git tag ArchivedState2013week18 

Se si impegnano gli stati archiviati in ordine cronologico allora il vostro software di visualizzazione (GitList o qualsiasi altra cosa) è quindi probabile che iniziare che vi mostra le modifiche software per correzioni storiche, anche se mescolati insieme, a volte e incompleta in altri.

Inoltre, sarete in grado di utilizzare git blame per avere un'idea quando sono state introdotte alcune linee di codice.