AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Mercurial: Mehrere changesets rückgängig machen
Thema durchsuchen
Ansicht
Themen-Optionen

Mercurial: Mehrere changesets rückgängig machen

Ein Thema von Der schöne Günther · begonnen am 24. Dez 2014 · letzter Beitrag vom 19. Nov 2015
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Mercurial: Mehrere changesets rückgängig machen

  Alt 24. Dez 2014, 11:41
Meine Frage entspricht genau der auf StackOverflow: What's the best way to back out multiple changesets in mercurial?. Ich bin zu dumm die Antworten zu verstehen und brauche Eure Hilfe

Meine Frage:
  • Ich bin auf einem Zweig der ein neues Feature implementieren soll
  • 1/3 der Commits sind Testcode dessen Beschreibung immer mit "Testcode: " anfängt
  • Nun bin ich fertig und möchte den Testcode wieder entfernen bzw. rückgängig machen

Ich sehe, ich kann mit hg backout das genaue Gegenteil einer Revision vornehmen um sie somit rückgängig zu machen. Angenommen, mein Verlauf sieht so aus:
Code:
1 - 2 - [3] - 4 - [5] - [6] - 8 - 8+
Die Nummern in Klammern sind die, welche ich nun rückgängig machen möchte.

Der Befehl hg backout -r 6 würde beispielsweise ein Changeset committen das die Änderung von 6 rückgängig macht. Ich möchte das nicht manuell von Hand machen. Wie kann ich sagen "Tue das für alle Changesets die mit "Testcode: " beginnen rückwärts?

Ein anderer Weg: In TortoiseHg kann ich die Changesets ja direkt finden, markieren und sagen "Copy Selected as Patch". Nun habe ich in einer Diff-Datei, die Änderungen die ich ja gerade rückgängig machen will. Also das Gegenteil von dem, was ich will. Komme ich von hier aus weiter?


Ich habe bislang den Testcode nie committed und das alles auf einem immer weiter anwachsenden Shelf gehabt, aber da verliere ich leider schnell die Übersicht.
  Mit Zitat antworten Zitat
alda

Registriert seit: 24. Mär 2014
Ort: Karlsruhe
93 Beiträge
 
Delphi XE6 Architect
 
#2

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 24. Dez 2014, 15:46
Ich kenne mich mit Mercurial nicht aus, aber hier mal meine Gedanken:
Also in Git gibt es die Möglichkeit einzelne Committs von Repo A nach Repo B zu holen (cherry-pick). Sofern es so etwas auch in Mercurial gibt könntest Du einen neuen Branch anlegen und nur die Committs "cherry-picken", die Du behalten möchtest.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 24. Dez 2014, 16:07
Ja, so etwas ginge in Mercurial auch- Aber genau diese Handarbeit möchte ich mir ja sparen.

Aber gute Idee, ein neuer Zweig wäre eine dritte Möglichkeitee. Mal sehen ob ich dort irgendeinen Automatismus finde dem ich sagen kann "Nimm nur die mit welche nicht mit 'Testcode: ' anfangen".
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 24. Dez 2014, 16:25
Der Ansatz, den Testcode gar nicht in das Repo rein zu lassen, hat natürlich auch seinen Charme. Dann muss man sich keine Gedanken machen, wie man die ChangeSets später wieder raus bekommt.

Ich weiß jetzt nicht, was man sich jetzt genau unter diesem Testcode vorstellen muss, aber so aus der Hüfte fallen mir da die Verwendung von mehreren Shelves oder eine Patch-Queue aus der MQ-Extension ein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 24. Dez 2014, 16:43
Ein konkretes Beispiel für den "Testcode":
Es sollen von einem externen Gerät eingelesene Informationen auf einer neuen Seite in der Anwendung dargestellt werden. Um im normalen Betrieb auf diese Seite zu kommen muss man sich am Terminal mit einer Chipkarte identifizieren. Da mir das zu blöd ist, baue ich diese Überprüfung vorübergehend aus bzw. überspringe sie.

Wenn diese Änderung später im Programm verbleibt ist das nicht gut


Von dieser "Queues"-Erweiterung höre ich ständig, ich werde mir das wohl auch einmal ansehen müssen. Vielleicht wird das ja in die richtige Richtung gehen...
  Mit Zitat antworten Zitat
alda

Registriert seit: 24. Mär 2014
Ort: Karlsruhe
93 Beiträge
 
Delphi XE6 Architect
 
#6

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 24. Dez 2014, 17:18
Ein konkretes Beispiel für den "Testcode":
Es sollen von einem externen Gerät eingelesene Informationen auf einer neuen Seite in der Anwendung dargestellt werden. Um im normalen Betrieb auf diese Seite zu kommen muss man sich am Terminal mit einer Chipkarte identifizieren. Da mir das zu blöd ist, baue ich diese Überprüfung vorübergehend aus bzw. überspringe sie.

Wenn diese Änderung später im Programm verbleibt ist das nicht gut


Von dieser "Queues"-Erweiterung höre ich ständig, ich werde mir das wohl auch einmal ansehen müssen. Vielleicht wird das ja in die richtige Richtung gehen...
In einer perfekten Welt wäre das nichts anderes als ein Testumfeld (DUnit / DunitX) in dem Du die entsprechenden Identifizierungen gemockt hast - also durchaus Code der im Repo landet, allerdings nicht im Produktivcode, sondern im "Testcode".
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 18. Nov 2015, 17:22
Ich wollte noch einmal nachträglich sagen dass Uwes Vorschlag mit den Patch Queues genau war was ich wollte.

Es ist zwar manchmal etwas fummelig da man keine Änderungen in der Arbeitskopie haben darf bevor man den ersten Patch draufwirft.
Und ich brauchte durchaus etwas, um es überhaupt zu verstehen.

Aber im Endeffekt ist es ein toll steuerbarer Stapel "zwischen" dem letzten Commit und der Arbeitskopie. Profis können wahrscheinlich nur müde lächeln aber für mich war das Neuland.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 19. Nov 2015, 06:04
Hallo,
Hm, also bei mir bleibt Testcode im SVN drin.
Per IFDEF lässt sich das leicht benutzen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Mercurial: Mehrere changesets rückgängig machen

  Alt 19. Nov 2015, 09:39
Aber das bläht den Quelltext teilweise so unendlich auf

Ich gebe mal ein anderes Beispiel für welches ich die Patch Queues lieben gelernt habe:

Das Handbuch des Produkts enthält eine Vielzahl an Software-Screenshots. Das Handbuch sollte natürlich auch zur aktuellen Software-Version passen. Jetzt kann ich natürlich nicht für jedes neue Release, für jede Sprache von jeder Situation neue Screenshots machen.

Stattdessen habe ich mir einen Automatismus gebaut der die die einzelnen Abbildungen in jeder Sprache direkt als fertige Bilder auf die Platte legt. Dazu gehören natürlich auch "gefälschte" Oberflächen die suggerieren, eine Messung würde schon seit Stunden laufen.

Das alles ist ein einer Patch Queue. Neue Version? Patch-Queue einmal drauf werfen, Programm starten, fertig. Patches wieder runternehmen, normal weitermachen.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz