Sono nuovo su Mercurial. Non riesco a trovare il comando giusto. Ho provato l'aggiornamento / checkout senza fortuna. Sto usando il repository locale. Grazie
Sono nuovo su Mercurial. Non riesco a trovare il comando giusto. Ho provato l'aggiornamento / checkout senza fortuna. Sto usando il repository locale. Grazie
Risposte:
Penso che tu voglia hg revert -r<rev> <file>
(questo cambierà il file in modo che sia com'era nella revisione data).
Come detto da djc revert
altera un file in posizione per corrispondere a una revisione precedente. Se vuoi che non sia a posto puoi usare hg cat -r revisionid filename
(sostituendo revisionid e nome file ovviamente) che produrrà il file in stdout, adatto per il reindirizzamento ovunque tu voglia.
hg revert
risolve effettivamente questo problema. Ma penso che tu sia confuso su una gamma più ampia di cose rispetto alla semplice risposta alla tua domanda e vuoi provare a rispondere in modo più completo.
hg update
è un intero comando di repository e non funzionerà su singoli file. È diverso dalla sovversione svn update
in questo modo. Se lo fai hg --help update
puoi vedere che questo è il caso perché il comando non accetta argomenti di file. Può essere utilizzato per spostare l'intero repository su una particolare istantanea, ma non può essere utilizzato per farlo su un solo file.
Se digiti hg --help
visualizzato un elenco di comandi. È un elenco piuttosto ampio e un po 'scoraggiante, ma se lo leggi, troverai questa riga:
revert restore individual files or directories to an earlier state
Ora, se vuoi solo l'ultimo stato a scopo di confronto, c'è un altro comando a cui potresti essere interessato, e questo è hg cat
. Ciò ti consentirà di stampare il contenuto di un file in qualsiasi revisione particolare. È quindi possibile reindirizzare il suo output in un altro file. Quindi puoi avere la precedente versione valida nota del tuo file e la vecchia versione da confrontare fianco a fianco.
Il motivo per cui Mercurial ha un update
comando separato è che è possibile fare qualcosa in Mercurial che è impossibile in Subversion. È possibile update
passare a una versione precedente, apportare modifiche, quindi eseguire il commit. Questo creerà un ramo. Il update
comando ha l'effetto di cambiare anche la revisione genitore della directory di lavoro corrente così come cambiare il contenuto di tutti i file in quella directory alle versioni di quella revisione genitore.
Ciò significa che revert
cambia il contenuto di un file (o anche l'intero repository se si danno al comando gli argomenti giusti) ma lascia la revisione genitore della copia di lavoro corrente lo stesso.
È possibile scoprire la revisione padre (o le revisioni nel caso di una fusione) della copia di lavoro corrente utilizzando il hg parents
comando.
In Subversion le revisioni sono una progressione strettamente lineare. Mercurial crea rami in un batter d'occhio e sono quasi altrettanto facili da unire. Le revisioni formano un DAG, non una progressione strettamente lineare.
Per estrarre una revisione specifica di un file specifico puoi farlo su Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Qui, 9 è il numero di revisione.
O ancora meglio:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"