2010-07-18 3 views
14

So in Subversion, wenn ich eine svn up mache Ich bekomme eine Liste von Dateien, die hinzugefügt, geändert, gelöscht und konfliktfrei waren.Welche Dateien werden geändert vs hinzugefügt, wenn ich eine hg pull und hg update

Wenn ich eine hg pull dann hg up -v mache zeigt es nur eine Liste von: getting file.ext aber ich habe keine Möglichkeit zu wissen, ob diese Datei neu ist oder bereits existiert. Gibt es eine Möglichkeit, Mercurial die gleiche Art von Meta anzeigen zu lassen, wenn die Datei hinzugefügt, geändert oder gelöscht wurde?

Bietet Mercurial irgendeine Fähigkeit zu tun, was ich verlange?

Antwort

17

Verwenden Sie den Befehl status Änderungen in Dateistatus zwischen der Arbeitskopie zur Liste und seine Elternrevision oder zwischen irgendwelchen zwei Revisionen. Es gibt Ihnen eine Ausgabe wie folgt aus:

$ hg status --rev .:tip 
M hgext/keyword.py 
M mercurial/cmdutil.py 
M mercurial/commands.py 
M mercurial/context.py 
M mercurial/patch.py 
A tests/test-encoding-align 
A tests/test-encoding-align.out 

, die zu diesem Update entspricht:

$ hg update -v 
resolving manifests 
getting hgext/keyword.py 
getting mercurial/cmdutil.py 
getting mercurial/commands.py 
getting mercurial/context.py 
getting mercurial/patch.py 
getting tests/test-encoding-align 
getting tests/test-encoding-align.out 
7 files updated, 0 files merged, 0 files removed, 0 files unresolved 

Edit: Sie können einen preupdate Haken schaffen immer diese Informationen als Teil Ihrer Updates zu erhalten. Ich bin zufällig gerade jetzt auf Windows sein, und hier dieser Haken funktioniert:

[hooks] 
preupdate = hg status --rev .:%HG_PARENT1% 

ersetzen %HG_PARENT1% mit $HG_PARENT1 auf Unix-ähnlichen Systemen. Dies sollte die Mercurial-Erfahrung noch mehr Subversion-artig machen :-)

+0

Danke! Ich kann eine "hg id" bekommen, die Revision, die ich gerade bei einem "hg pull" dann "hg stat --rev PREVIOUS_REV: tip" mache und es genau macht, was ich wollte – James

+0

James: danke für die Annahme dieser Antwort, ich Freue mich, ich könnte helfen! :-) –

+0

Sie verdienen mehr Punkte als Sie für diese Antwort bekommen haben. – Omnifarious

6

Der Befehl hg incoming --stat macht etwas, was Sie fragen. Auch wenn Sie auf eine neue Version aktualisieren, können Sie hg diff --git -r <rev> tun, und es wird Ihnen ein Unterschied geben, der zeigt, welche Dateien neu sind.

+0

hg eingehend --stat sagt mir immer noch nicht, ob eine Datei neu ist oder nicht und ich müsste hg diff auf jeder Datei ausführen, um zu sehen.Im schlimmsten Fall kann ich das Verzeichnis vor dem Update rekrutieren und sehen, was neu ist, nachdem ich aktualisiert habe, aber das scheint so schrecklich. Es überrascht mich nur, dass diese Informationen leichter verfügbar sind. – James

+0

@James - Ich frage mich, ob eine spezialisierte Vorlage für 'Log' dies nicht behandeln würde. Ich werde ein bisschen nachforschen und sehen. – Omnifarious

19

Omni hat Ihre Antwort, und ich habe für sie, aber nur alle Optionen anzuzeigen:

Vor

  • hg eingehenden # Ziehen der Changesets zeigt finden Sie
  • hg erhalten eingehende --verbose # zeigt die Differenzmengen die Sie für jede
  • hg eingehenden --patch # zeigt die vollständige Differentiale aller Changesets mit einer Dateiliste bekommen Sie
  • bekommen
werde # Zeigt die Change Sie
  • bekam --verbose -r hg log Tipp::. Bekam einschließlich Spitze # zeigt die Change Sie

    Nach dem Ziehen (aber nicht aktualisiert):

    • hg log -r. eine Dateiliste für jede
    • hg log --patch -r. Reise # die vollen diffs aller Changesets zeigt Ihnen
    • bekam
  • 1

    Sie können hg incoming mit Bundles verwenden, um Martins Antwort auf Änderungen anzuwenden, die Sie noch nicht tatsächlich gezogen haben.

    > cd myrepo 
    # Get the latest revision in my copy 
    > hg tip 
    changeset: 17:5005ce2dc418 
    . 
    . 
    . 
    # Get a bundle file of changes, but don't put them in myrepo yet 
    > hg incoming --bundle changes.bundle 
    # Overlay the bundle on myrepo and do hg status as if I've already pulled 
    > hg -R changes.bundle status --rev 17:tip 
    A addedfile 
    M modifiedfile 
    . 
    . 
    . 
    # Changes are good! Pull from bundle 
    hg pull changes.bundle 
    
    Verwandte Themen