AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TortoiseHG: Wie chunks aufsplitten?

Ein Thema von Der schöne Günther · begonnen am 10. Okt 2014 · letzter Beitrag vom 14. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Der schöne Günther

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

TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 17:03
Ich habe ein banales Anfängerproblem:

Angenommen ich ändere
Delphi-Quellcode:
procedure someProc();
begin
    // Diese Zeile wird gleich fehlen
end;
in

Delphi-Quellcode:
procedure someProc();
begin
   // Dies ist ein Kommentar
   someStuff1();

   someStuff2();
end;
.

Möchte ich nun comitten, bin ich der Art und Weise wie der Computer daraus einzelne "Chunks" bastelt vollkommen ausgeliefert:

Ich bekomme einen Chunk den ich entweder comitten kann oder auch nicht:
Code:
@@ -9,7 +9,10 @@
 
 procedure someProc();
 begin
-    // Diese Zeile wird gleich fehlen
+   // Dies ist ein Kommentar
+   someStuff1();
+
+   someStuff2();
 end;
 
 begin
Verständlich. Aber ich möchte daraus zwei Commits machen. In Subversion wäre das jetzt einfach. Aber hier (Mercurial) stehe ich auf dem Schlauch.

Meine Vermutung ist, dass mir jetzt das "Shelve Tool" weiterhelfen kann, aber irgendwie sehe ich hier auch keine Option, an den mir vorgegebenen Chunks etwas zu ändern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 17:12
Du möchtest erst das "weggelassene" und das das neue committen?

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

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

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 17:17
Ja, so ungefähr: Ich würde, in diesem Beispiel, gerne erst das
Code:
 -    // Diese Zeile wird gleich fehlen
 +   // Dies ist ein Kommentar
 +   someStuff1();
und dann das
Code:
 +
 +   someStuff2();
committen.


Ein etwas praxisnäheres Beispiel ist, dass er mir gerne einen Quelltextblock mit zwei Methoden folgendermaßen in zwei Chunks aufsplittet:
Delphi-Quellcode:
// CHUNK 1 START
   procedure someProc1();
   begin
      ShowMessage('Hallo Welt');
// CHUNK 1 ENDE



// CHUNK 2 START
   end;

   procedure someProc2();
   begin
      ShowMessage('Tschüss Welt');
   end;
// CHUNK 2 ENDE

Geändert von Der schöne Günther (10. Okt 2014 um 17:25 Uhr) Grund: Praxisnäheres Beispiel hinzugefügt
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 17:30
Solange Mercurial die beiden Änderungen als zu dem gleichen Codebereich gehörend ansieht und in einen Chunk packt, weiß ich auch keine Möglichkeit, das aufzusplitten. Auch das Shelve-Tool arbeitet immer noch chunk-orientiert. Im Moment sehe ich da nur die Möglichkeit, die Datei zu sichern, die unerwünschten Zeilen rauszulöschen, committen, rücksichern und nochmal committen.

Nur mal aus Interesse, weil ich schon lange nicht mehr damit gearbeitet habe: wie würdest du das denn in SVN machen?
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.157 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 17:48
Dann wäre ich jetzt aber wirklich hilflos

In Subversion würde man einfach
  1. für die entsprechende(n) Datei(en) "Nach Commit wiederherstellen" aktivieren (Rechtsklick im Commit-Fenster)
  2. mit Tortoisemerge die Dinge, die noch nicht committet werden sollen rausnehmen
  3. committen

Ich hatte mir so viel vom Mercurial Shelf erhofft, aber wenn der im Endeffekt überhaupt nichts kann ist das ja auch irgendwo weitgehend sinnfrei


"Sichern und Wiederherstellen". Eigentlich möchte ich ja auch genau das. Kennst du da zufällig ein Add-On? Das jedes mal von Hand zu machen raubt einem ja auch die Zeit...
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 17:49
Wäre crecord vielleicht etwas? Ich kenne es selber nicht, aber es scheint das zu tun, was du willst. Von sich aus kann TortoiseHg das glaube ich nicht.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 10. Okt 2014, 18:02
Das sieht gut aus, läuft aber nicht einmal unter Windows.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#8

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 13. Okt 2014, 08:36
Die Frage ist jetzt aber wirklich mal rein akademischer Natur, oder? Wenn Dich Zwischenschritte interessieren, die Du nicht comitted hast, dann solltest Du sie halt künftig comitten. Woher soll denn Hg wissen, wie Deine Zwischenschritte zu einem Commit aussehen? Oder anders gefragt: wieso sollte sich Hg mit der Abspeicherung von (erratenen) Zwischenschritten belasten? Ist der Code nach einem Pull oder Merge falsch? Wenn nein, ist alles gut. Wenn ja, dann könnten wir dort prüfen, wieso er falsch ist, und einen Bugreport aufmachen.

Ausserdem: Befrei Dich von Deiner Erinnerung an SVN, das ist eigentlich kontraproduktiv.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 13. Okt 2014, 09:19
Wenn Dich Zwischenschritte interessieren, die Du nicht comitted hast, dann solltest Du sie halt künftig comitten. Woher soll denn Hg wissen, wie Deine Zwischenschritte zu einem Commit aussehen? Oder anders gefragt: wieso sollte sich Hg mit der Abspeicherung von (erratenen) Zwischenschritten belasten?
Im Prinzip hast du zwar Recht, aber das setzt schon eine gehörige Disziplin voraus. Auch nach langjähriger Arbeit mit Mercurial passiert es mir immer wieder, daß ich zwei, drei Sachen gleichzeitig mache und das Commit dazwischen vergesse. Das sind in der Regel nicht unterschiedliche Fehler oder Features, sondern eher so kleine Ungereimtheiten auflösen und Unschönheiten beseitigen, die aber mit der eigentlichen Aufgabe nichts zu tun haben. Bisher konnte ich das durch Abwählen der Dateien oder Chunks noch lösen. Einen solchen Fall, wie Günther ihn darstellt, hatte ich bisher noch nicht. Es wäre allerdings schon ein deutlicher Komfortgewinn, wenn man beim Commit auch zeilenweise auswählen kann welche Änderung rein kommt oder nicht. Die Existenz der crecord-Extension zeigt zumindest, daß auch andere dieses Problem haben. Bedauerlicherweise ist die Extension zu Linux-lastig und wird es deswegen wohl nicht in das Standard-Deployment schaffen. Grundsätzlich sollte jedes halbwegs brauchbare Merge-Tool der Aufgabe gewachsen sein - was wiederum Raum für Hoffnung lässt. Meine eigenen Python-Kenntnisse sind leider zu rudimentär um die Aufgabe selbst zu übernehmen.

Jetzt kommt mir gerade eine Idee, wie man das durch einen geschickten Workflow eventuell auch mit Bordmitteln lösen könnte. Ich muss mir das mal eine Weile durch den Kopf gehen lassen...
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.157 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: TortoiseHG: Wie chunks aufsplitten?

  Alt 13. Okt 2014, 09:52
Ich gebe ein ganz anderes Beispiel: Du änderst an einem DFM-Formular etwas. Setzt eine Komponente von Enabled = True auf Enabled = False oder so etwas.

Zeitgleich ändern sich am Formular auch ganz automatisch Werte wie Height, Width, ClientHeight, ClientWidth, ExplicitWidth, ExplicitHeight, TabOrder. Oder ich verschiebe aus Versehen einen Button um einen Pixel.

Die Änderungen liegen jetzt nah genug bei einander- Ich "bekomme" nur einen Chunk.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:42 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