Lemme vedi se lo scenario è corretto. Hai...
- alcune modifiche non impegnati nella vostra directory di lavoro in cui si preferisce non commettono ancora,
- alcuni cambiamenti unpushed nel repository locale,
... ma il tuo capo fastidioso si batte sulla indietro e dice "Ehi! Quando hai intenzione di spingere quel cambiamento che hai menzionato nella riunione del personale? Stiamo tutti aspettando!" Lui sta lì in attesa che tu lo faccia, quindi come fai a tirarlo fuori dai capelli velocemente e facilmente?
Questo è facile. Vuoi usare lo MQ extension. È in bundle con l'installazione standard di Mercurial.
Innanzitutto aggiungilo al file .hgrc
.
[extensions]
mq =
per riporre le modifiche non impegnati in una voce di coda delle patch, fare questo:
$ hg qnew stash
$ hg qpop
Ora spingere il più vecchio commette, così il vostro capo vi scendere la schiena.
$ hg push
Infine, ripristinare la directory di lavoro in questo modo:
$ hg qpush
A questo punto, avete ancora la patch registrato nella vostra coda di patch. È appena contrassegnato come "applicato" ora. Terminare la modifica del codice, poi fare questo per aggiornare la patch con le modifiche finiti e un messaggio di commit di registro, quindi finalizzare la patch in un changeset:
$ hg qrefresh -m"Commit message goes here."
$ hg qfinish stash
Ecco le nozioni di base, ma c'è molto di più si può fare se vuoi diventare davvero fantasioso. L'estensione MQ è come un nuovo mondo di controllo di revisione nascosto sotto il repository Mercurial. È come la scorta di Git, ma più flessibile e marginalmente meno confusa.
Impara, muta, evolvi!
fonte
2010-09-15 02:10:06
disporre di un sistema di backup separato può sembrare un po 'una seccatura. Se solo Git o Mercurial possono consentire alle persone di impostare un repo per push non vincolato. Qualcosa come 'git push --uncommitted ssh: // some/peter/tmp' –
@Jian, ancora, questi non sono programmi di backup. L'idea è di fare uno o più commit significativi, che poi condividi. Non avrebbe molto senso avere un repository che contenesse sia commit che work-in-progress. –
Anche il "sistema di backup separato" può essere un repository. Questo è il modo in cui lavoro: codice nel mio repository personale (dove mi impegno spesso), e ho un repository centrale per condividere il mio lavoro con i miei colleghi (dove spingo, ma meno spesso). Per fare il backup del lavoro che faccio nel mio repository personale, ho un terzo repository: un hook nel mio repository personale esegue una push su quel repository di backup ogni volta che commetto. In questo modo, l'operazione di backup è completamente trasparente (la penalità temporale è trascurabile). – barjak