Frage

Ich benutze Mercurial Patches in den folgenden Fällen: -

  1. Wenn ich muss Pull von einem Remote-Repository und haben hervorragende unbestätigten Änderungen . Dann erstelle ich einfach einen Patch, qpop es, zieht aus der Remote-Repository, und dann wieder den Patch importieren.
  2. Wenn ich muss Upload Patches reviewboards . Ich habe einfach einen Patch machen und laden Sie es.

Wie sonst verwenden Sie Mercurial Patch-Warteschlangen? Ich glaube, dass es ein sehr mächtige Mercurial Erweiterung und dass ich verwende es nicht in ihrem vollen Potential.

War es hilfreich?

Lösung

Der Mercurial Wiki hat ein guten Abschnitt auf Anwendungsfälle:

Zusammenfassung:

  1. Speichern des aktuellen Status der Arbeitskopie, so dass Sie leicht, um es auf
  2. später rückgängig machen können
  3. eine „verwirrte Arbeitskopie“ Verhindern, dass - wenn man auf halben Weg durch eine Änderung und will etwas zu ändern sonst
  4. Geben Sie wandelbar, umsortierbaren Commits, so dass Sie ‚Geschichte‘ einfach nur direkt vor drängen bekommen kann.

Andere Tipps

Sie haben nicht wirklich Mercurial Patches für diese benötigen. Wenn Sie hervorragende Uncommited Änderungen haben, wenn Sie ziehen, werden sie mit der Spitze zusammengefügt werden.

Beispiel:

C:\>hg init db
C:\>cd db
C:\db>echo >file1
C:\db>echo >file2
C:\db>echo >file3
C:\db>hg ci -Am codebase          # Create a code base with 3 files.
adding file1
adding file2
adding file3
C:\db>echo a change >>file2       # Outstanding change to file2.
C:\db>hg st
M file2

An dieser Stelle werden wir die Datenbank klonen und eine Änderung zu übernehmen, dass wir ziehen können.

C:\db>hg clone . \db2
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\db>cd \db2
C:\db2>echo a change >>file3
C:\db2>hg ci -m "file3 change"    # Commit a change to file3.

Zurück in der ursprünglichen Datenbank ...

C:\db2>cd \db
C:\db>hg st                       # Still have uncommitted change
M file2
C:\db>hg pull \db2
pulling from \db2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
C:\db>hg st                       # We have the new history, but haven't updated.
M file2                           # file2 has uncommitted change.
C:\db>type file3                  # file3 is unchanged. 
ECHO is on.
C:\db>hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\db>hg st                       # We've updated, and file2 *still* has
M file2                           #    uncommitted change.
C:\db>type file2
ECHO is on.
a change
C:\db>type file3                  # But file3 now has committed change
ECHO is on.                       #    that was pulled.
a change

Die Moral ist, können Sie einfach ziehen und zu aktualisieren, auch mit unbestätigten Änderungen. Wenn es merge Konflikte sind, normal merge Verhalten tritt auch.

Für Patch-Export hg export <rev> werden Patches exportieren für die Überprüfung.

Wenn Sie eine Patch-Warteschlange auf Bitbucket erstellen, listet es einige der häufigsten Anwendungen für die Patch-Warteschlangen im rechten Fensterbereich. Ihre Erklärung ist sehr gut und beantwortet Ihre Frage direkt. Zitate von ihm sind unten.

Patch-Warteschlangen sind gut für:

  
      
  • Die Entwicklung Funktionen, die Sie für die Upstream-Rezension zu verfassen beabsichtigen

         

    Da Patches in Patch-Warteschlangen   modifiziert werden, bieten sie eine ideale Möglichkeit,   eine Funktion in einem entwickeln   Geschichte verfolgt Art und Weise, während nach wie vor   so dass Sie leicht integrieren   Feedback

  •   
  • Das Experimentieren mit einer neuen Funktion des Hinzufügen

         

    Patch Warteschlangen Krempel nicht Ihre   Projekt der Geschichte, so können Sie sicher   nutzen sie als eine Möglichkeit, schnell ausprobieren   eine Idee, und es in der Version halten   Kontrolle, ohne unübersichtlich   Projektgeschichte mit gescheitert   Ausflüge. Wenn Sie sich entscheiden, die halten   Experiment, man kann leicht ein drehen   Patch-Warteschlange in eine Reihe von traditionellen   Mercurial Commits

  •   
  • Die Aufrechterhaltung private Anpassung für ein anderes Projekt

         

    Da Patch-Warteschlangen sind nicht Teil   das offizielle Änderungsprotokoll für ein Projekt,   sie sind ideal für private Aufrechterhaltung   Anpassungen für einen Upstream   Projekt. Zum Beispiel könnten Sie   Aufrechterhaltung eines Patch-Warteschlange, die Marken   Programm eine bessere Integration mit Ihrem   Unternehmens-Workflow

  •   

Patch-Warteschlangen sind nicht gut für

  
      
  • Langlauf Zweige

         

    Da Patch-Warteschlangen sind hoch   flüchtig, sie einen schlechten Job Tracking tun   die langfristige Geschichte Ihrer Quelle   Code. Aus diesem Grund langer Laufzeit   Zweige, wie beispielsweise diejenigen, die   entsprechen Produkt-Releases, sollten   gehalten werden, in Repositories oder dem Namen   Zweige.

  •   
  • Konzernentwicklung

         

    Patch Warteschlangen verfolgen nicht merge   Geschichte, die ihnen ein schlechter macht   Wahl für Gruppenentwicklung zu tun,   wo Sie wirklich wollen, um zu sehen, wenn ein   gegebener Satz von Funktionen wurde verschmolzen zu   ein Repository. Wenn Sie Zweifel haben, können Sie   bleiben sollte zu einem traditionellen Gabel,   aber die Beherrschung der Macht der Patch   Warteschlangen werden Sie enorme geben   Flexibilität in Ihrem Workflow und   bieten Ihnen stark verbessert   Zusammenarbeit Fähigkeiten.

  •   

MQ ist ein großes Werkzeug gleichzeitige Entwicklung zu verwalten. Blatant Selbst Plagiat und Eigenwerbung aus meiner eigenen Antwort :

  

3 Verwenden MQ mit einem Patch (oder mehrere aufeinander folgenden Patches) pro Projekt.

     
      
  • Pros:. Einfach und leicht
  •   
  • Nachteile: muss vor dem Schalten qrefresh und den Wiederaufbau nach; knifflig   und riskant, wenn Projekte nicht   orthogonal.
  •   
     

4 Verwenden Sie einen MQ Zweig pro Projekt.

     
      
  • Vorteile: extrem flexibel und skalierbar (für die Anzahl gleichzeitiger   Projekte)
  •   
  • Nachteile: muss qrefresh und qcommit vor dem Schalten und den Wiederaufbau nach;   fühlt sich kompliziert.
  •   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top