2010-06-14 11 views

risposta

10

In primo luogo, creare un file con questo contenuto:

changeset = "{files}" 
file = "{file}\n" 

Diciamo che si chiami fuori style.txt e metterlo nella propria home directory. Poi si può dare questo comando:

hg -q outgoing --style ~/out-style.txt | sort -u 
+0

grazie mille! wow ... non è spesso necessario che non ci sia un modo standard per elencare tutti i file che verranno spinti? Voglio dire, non è utile vedere qualcosa del genere prima di fare una spinta? Ad esempio, proprio ora, quando eseguo "hg out -v", vedo un elenco di 20 changeset e singoli file e elenchi di file ... e devo combinare mentalmente i nomi ... e questo è un Ruby on Rails progetto dove ci sono tonnellate di file. –

+0

Immagino che tutto dipenda da come lavori. Alla fine di ogni giornata, spingo quando tutto è in uscita. Non ho bisogno di sapere quali changeset o file verranno inseriti. – JWWalker

+0

Concordato con JWWalker, non è qualcosa di cui normalmente ti preoccupi. Tuttavia sembra che sarebbe un'estensione banale da scrivere se si desidera realmente la funzionalità più facilmente. – dimo414

2

Io uso Torgoise Hg, che è un'estensione della shell che ha una vista "sincronizzata" che consente di vedere i file in uscita prima di inviarli. È conveniente anche per i commit e altre cose.

+0

ah, la riga di comando dovrebbe avere anche questo ... ma non sono sicuro di come –

+0

il mio modo preferito, anche se non sono bloccato in una console. – Mizipzor

+0

Io uso un MacBook Pro con Snow Leopard su di esso ... sembra che i ragazzi di Windows abbiano TortouseHg ma i Mac sono bloccati con la linea di comando! –

6

Io di solito uso

hg outgoing -v | grep files 

Rende il genere messa in vendita di più breve, ma pretende molto. Ma finora non sono stato in una situazione in cui voglio spingere così tanto (e allo stesso tempo controllare i file) che è stato un problema.

[Edit] di fare ciò che si vuole:

  • Usa cut per rimuovere la files: parte
  • Per changeset con più di un file toccato, utilizzare tr di metterli su righe separate
  • Infine ordina l'output risultante con sort

Come così:

hg outgoing -v |grep files: |cut -c 14- |tr ' ' '\n' |sort -u 

Si può mettere questo in ~/outgoingfiles.sh o qualcosa di averlo bello e pronto.

+0

Questo metodo ha lo svantaggio che i nomi di file all'interno di un changeset sono separati da spazi. Se si hanno nomi di file che contengono spazi, non c'è modo di separare automaticamente i nomi dei file prima di ordinare. – JWWalker

6

Una funzione un po 'poco apprezzata: hg status può mostrare informazioni sulle modifiche dello stato del file tra changeset arbitrari. Questo può essere usato per ottenere un elenco di file è cambiato fra le revisioni X e Y:

hg status --rev X:Y 

In questo caso, possiamo usare hg outgoing, per trovare la prima di modifiche in uscita X e poi fare

hg status --rev X: 

per vedere i cambiamenti dei file dalla revisione X. È possibile combinare questo in una sola riga nella shell:

 
hg status --rev $(hg outgoing -q --template '{node}' -l 1): 
+0

Ho pensato che "hg status" si trova tra la directory di lavoro e il repository locale, mentre "hg outgoing" si trova tra 2 repository? –

+0

Sì - Il 99% delle volte, si usa 'hg status' per mostrare le differenze tra la revisione genitore della copia di lavoro e la copia di lavoro stessa. Ma puoi chiedere lo stato del file tra due revisioni. Quindi sopra uso semplicemente 'hg outgoing' per conoscere il primo changeset in uscita e poi chiedere' hg status' per mostrare i cambiamenti da quel changeset. –

0

Un semplice hg out sarà anche risolvere questo problema. Elencherà tutto il commit, ma ancora spingere i check-in.

+0

Non sono sicuro che questo in realtà risponda alla domanda: poiché la domanda riguarda i * file * che sono cambiati. –