Σύγκριση branches με το εργαλείο git difftool (ως difftool το meld)

Μου χρειάστηκε να συγκρίνω αρχεία μεταξύ branches κάποιου repo.
Γενικά ένα πολύ ενδιαφέρον και χρήσιμο πρόγραμμα γι αυτή την δουλειά είναι το meld. Έψαξα λοιπόν πως γίνεται να κάνω την δουλειά μου με το meld για την συγκεκριμένη περίπτωση που με απασχολούσε.

Ρύθμισα το git ώστε να χρησιμοποιεί το meld ως difftool και μετά έδωσα την εντολή:

git difftool master..testing

Άνοιξε επιτυχώς το meld και μου εμφάνιζε ένα ένα αρχεία που είχαν διαφορές μεταξύ του master branch και του testing. Πατώντας στα βελάκια που εμφανίζονται

ώστε να “περάσω” κάποιες αλλαγές από το testing στο master, ενώ φαινόταν να γίνονται οι αλλαγές, συνειδητοποίησα ότι για κάποιο λόγο το meld δεν άνοιγε τα αρχεία από το directory του repo αλλά έκανε ένα προσωρινό αντίγραφο στο path /tmp. Έτσι όταν πατούσα save τα έσωζε στο αντίγραφο και όχι στο πρωτότυπο αρχείο.

Το αποτέλεσμα… Μια τρύπα στο νερό! :smiling_face_with_tear:

Υπάρχουν 2 workarounds που σκέφτηκα και μου υπέδειξε o @cerebrux.

  1. 2o clone του repo τοπικά στο pc μου και να κάνω checkout στο testing branch. Μετά μπορούμε να κάνουμε σύγκριση directories πια με το meld.

  1. Να κάνουμε clone του repo ως bare repo και να κάνουμε και πάλι σύγκριση directories. (Δεν είμαι εξοικειωμένος με την συγκεκριμένη δυνατότητα του git (bare repos))

Οι ερωτήσεις μου είναι οι εξής:

  1. Υπάρχει τρόπος το meld να ανοίγει τα πρωτότυπα και όχι αντίγραφα;
  2. Όταν ανοίγουμε το meld, και μας δίνει δυνατότητα για Version Control View, μπορώ από εκεί να κάνω σύγκριση μεταξύ branches ή μόνο μεταξύ commits του ιδίου branch?

Να σου πω την αληθεια δεν μου έχει τύχει να κάνω diff μεταξύ δύο διαφορετικών branches (εκτός του master/main branch), αλλά αν μου το έλεγες, το πιο πιθανό είναι οτι θα έκανα το εξής:

  1. mkdir branch1; cd branch1; git clone $url; git checkout branch1; cd …/
  2. mkdir branch2; cd branch2; git clone $url; git checkout branch2; cd …/
  3. diff -Nur branch1 branch2 > file.diff
  4. code file.diff (ή με οποιον άλλο editor ξερει να διαβαζεισ diff files).
1 «Μου αρέσει»

Έχω δοκιμάσει το meld και ήθελα πάρα πολυ να ειναι το πρόγραμμα που θα χρησιμοποιούσα για gui diffs ( οταν αυτά προκύψουν σε local env).

Αλλα ακόμη δεν έχω βρεί κάτι καλύτερο απο αυτό εδώ.

1 «Μου αρέσει»

Καλώς ήρθες @geogr στην παρέα μας :hugs:

2 «Μου αρέσει»

Καλως σας βρηκά :smile: Δεν είδα κάποιο introductory space με μια διαγώνια που έριξα.

1 «Μου αρέσει»