Browser Bare Bones
git instaweb --httpd=webrick
dal libro git scm
combinalo con qualcosa come l'approccio qui descritto per lo sviluppo distribuito (credito a datagrok per il concetto ben descritto)
Avviare un server git una tantum da qualsiasi repository locale.
L'ho già twittato ma ho pensato che potesse usare un po 'di espansione:
Abilita flusso di lavoro git decentralizzato: git config alias.serve "demone --verbose --export-all --base-path = .git --reuseaddr --strict-percorsi .git /"
Supponi di usare un flusso di lavoro git che implica lavorare con un repository "ufficiale" di base da cui estrarre e trasferire le modifiche. Sono sicuro che molte aziende lo fanno, così come molti utenti di servizi di hosting git come Github.
Supponiamo che il server, o Github, si blocchi per un po '.
Dopotutto, uno dei motivi per cui usi git è che hai una copia dell'intera cronologia del progetto nel tuo clone locale.
Puoi continuare a scrivere codice e impegnarti, mentre aspetti che il team operativo torni in vita il server. Nota per se stessi: acquistare ciambelle per il team operativo.
Ma cosa succede se, durante questo periodo di inattività, si desidera collaborare con un'altra persona, che potrebbe non essere un esperto git, sullo stesso repository?
Oppure, invece di tempi di inattività, cosa succede se tu e il tuo collaboratore siete sul campo e per qualche motivo non riuscite a ottenere la vostra VPN che vi consenta di connettervi al vostro repository ufficiale?
Oppure, se tu e il tuo collaboratore state apportando una serie di modifiche sperimentali e anche se avete accesso, non volete spingere il vostro casino incompiuto nel repository centrale ufficiale? (Nemmeno come rami di funzione.) Forse sei nel mezzo di ripulire un rebase disastroso o unirti e i rami sono dappertutto.
Bene, git, come probabilmente saprai, è un sistema di controllo della versione "distribuito" .
Anche se potresti usare un repository git "ufficiale" centrale nel tuo flusso di lavoro, hai comunque la possibilità di usare git in modo peer-to-peer, dove tu e il tuo collaboratore semplicemente costruite e condividete gli impegni tra di loro, e il centrale il server non deve nemmeno saperlo.
Quindi, come si ottengono le filiali e si impegna con esse o viceversa?
- È possibile utilizzare le funzionalità di git per inviare patch via e-mail. Ma questo è un po 'inelegante e richiede alcune conoscenze sulla loro fine su come applicare le patch inviate via e-mail.
- È possibile creare un account sul proprio computer per consentire al proprio collaboratore di accedere. Ma forse non hai accesso root locale o forse non ti fidi di loro con l'accesso SSH alla tua casella.
- Potresti clonare il tuo repository su una levetta e passarlo avanti e indietro. Ma è piuttosto noioso, soprattutto se ti trovi nella stessa rete locale e richiede una chiavetta USB.
Probabilmente puoi pensare anche ad altri metodi. Ma c'è un modo semplicissimo: se riesci a vederci sulla rete, puoi avviare un server git una tantum che possono usare come telecomando per clonare, recuperare, estrarre le modifiche e ucciderlo quando sei fatto con esso.
Lo strumento che lo abilita è git daemon
, che ha molte opzioni e funzionalità, ma allo scopo di abilitare questo semplice one-off "basta servire il repository in cui mi trovo", il modo di usarlo è creare un alias. Mi piace chiamarlo git serve
. Correre:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
L'uso di un alias è in realtà cruciale, perché gli alias git vengono eseguiti nella directory di base dell'albero di lavoro. Quindi il percorso '.git' indicherà sempre il posto giusto, indipendentemente da dove ti trovi nella struttura di directory del tuo repository.
Usa il tuo nuovo git serve
così:
- Corri
git serve
. "Pronto a rimbombare", segnalerà. Git è un coglione.
- Scopri il tuo indirizzo IP. Di 'che è 192.168.1.123.
- Di '"hey Jane, non sono pronta / in grado di portare questi commit all'origine, ma puoi recuperare i miei commit nel tuo clone correndo
git fetch git://192.168.1.123/
"
- Premere ctrl + c quando non si desidera più servire quel repository.
Potresti anche dire a Jane git clone git://192.168.1.123/ local-repo-name
se non ha ancora un clone del repository. In alternativa, utilizzare git pull git://192.168.1.123/ branchname
per recuperare e unire in una sola volta, utile se si lavora insieme su un ramo di funzionalità.
Nota, tuttavia, che non dovresti farlo su reti ostili se tieni segreti nel tuo repository, perché non c'è autenticazione. Non pubblicizza la sua esistenza, ma chiunque abbia un port scanner può trovarlo, connettersi ad esso e clonare il repository.
Ma non è super pericoloso perché è di sola lettura per impostazione predefinita. Leggi git daemon
attentamente la pagina man se pensi di voler abilitare l'accesso in scrittura. Nel caso in cui desideri ottenere i commit del tuo collaboratore, è molto più sicuro lasciarlo in sola lettura e chiedere al tuo collaboratore di eseguire anche questo comando, in modo da poterlo estrarre.
Tangenzialmente correlati: in tema di server unici, se si desidera condividere temporaneamente un gruppo di file statici su HTTP: python -m SimpleHTTPServer