Μου χρειάστηκε να συγκρίνω αρχεία μεταξύ branches κάποιου repo.
Γενικά ένα πολύ ενδιαφέρον και χρήσιμο πρόγραμμα γι αυτή την δουλειά είναι το meld. Έψαξα λοιπόν πως γίνεται να κάνω την δουλειά μου με το meld για την συγκεκριμένη περίπτωση που με απασχολούσε.
Ρύθμισα το git ώστε να χρησιμοποιεί το meld ως difftool και μετά έδωσα την εντολή:
git difftool master..testing
Άνοιξε επιτυχώς το meld και μου εμφάνιζε ένα ένα αρχεία που είχαν διαφορές μεταξύ του master
branch και του testing
. Πατώντας στα βελάκια που εμφανίζονται
ώστε να “περάσω” κάποιες αλλαγές από το testing
στο master
, ενώ φαινόταν να γίνονται οι αλλαγές, συνειδητοποίησα ότι για κάποιο λόγο το meld δεν άνοιγε τα αρχεία από το directory του repo αλλά έκανε ένα προσωρινό αντίγραφο στο path /tmp
. Έτσι όταν πατούσα save τα έσωζε στο αντίγραφο και όχι στο πρωτότυπο αρχείο.
Το αποτέλεσμα… Μια τρύπα στο νερό!
Υπάρχουν 2 workarounds που σκέφτηκα και μου υπέδειξε o @cerebrux.
- 2o clone του repo τοπικά στο pc μου και να κάνω checkout στο
testing
branch. Μετά μπορούμε να κάνουμε σύγκριση directories πια με το meld.
- Να κάνουμε clone του repo ως bare repo και να κάνουμε και πάλι σύγκριση directories. (Δεν είμαι εξοικειωμένος με την συγκεκριμένη δυνατότητα του git (bare repos))
Οι ερωτήσεις μου είναι οι εξής:
- Υπάρχει τρόπος το meld να ανοίγει τα πρωτότυπα και όχι αντίγραφα;
- Όταν ανοίγουμε το meld, και μας δίνει δυνατότητα για Version Control View, μπορώ από εκεί να κάνω σύγκριση μεταξύ branches ή μόνο μεταξύ commits του ιδίου branch?