Sync μεταξύ Mercurial και Git repos

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Oct 28 12:54:37 EEST 2010


On Wed, 27 Oct 2010 16:56:40 +0300, George Notaras <gnot at g-loaded.eu> wrote:
> Υπάρχει κάποιο πρόγραμμα που να κάνει sync ένα Mercurial repository με
> ένα Git;
>
> Έχω βρει το hg-git extension για mercurial, αλλά δεν είμαι απολύτως
> βέβαιος ότι αυτός είναι ο μόνος τρόπος.
>
> Τα bitbucket και github μπορούν να συνεργαστούν με κάποιο τρόιπο;
> Δηλαδή οι αλλαγές που στέλνονται στο ένα να στέλνονται αυτόματα και
> στο άλλο; Ή ζητάω πολλά;
>
> ΥΓ: Η αλήθεια είναι ότι δεν έχω κάνει κάποια σοβαρή προσπάθεια για
> αυτό το είδος sync, αλλά προτίμησα να ρωτήσω πρώτα.

Το fast-import/fast-export format είναι το de-facto standard για τέτοιου
είδους συγχρονισμό.  Δουλεύει πολύ καλά τόσο σε git όσο και hg, κάτι που
είναι φοβερό πλεονέκτημα σε σχέση με το 'Tailor' κι άλλα αντίστοιχα
εργαλεία από παλιότερα.

Πρόσεχε όμως γιατί ακόμα και με fast-export/fast-import υπάρχουν δύο
πολύ σημαντικές λεπτομέρειες οι οποίες αξίζουν προσοχή:

  - Δεν είναι ιδιαίτερα "εύκολο" στη χρήση.  Μπορεί να χρειαστεί να
    γράψεις κάμποσο scripted κώδικα για το integration.

  - Υπάρχουν διαφορές σημειολογικού χαρακτήρα μεταξύ git & hg, οι οποίες
    μπορεί να επηρεάσουν το πόσο καλά γίνεται ο συγχρονισμός.

Ειδικά το δεύτερο έχει σχέση με το τι ακριβώς ονομάζει 'branch' το κάθε
ένα από τα git/hg.  Αυτό που λέγεται 'branch' στο git δεν έχει σχέση με
τα 'named branches' του hg, αλλά μοιάζει περισσότερο με τα 'bookmarks'
του mercurial.

Επειδή δεν ξέρω ακόμα πόσο καλή υποστήριξη έχει το fast-export του git
και το fast-import του hg για bookmark-based 'branches', ίσως να μην
είναι ακόμα δυνατόν να έχεις 100% συγχρονισμό ή να χρειάζεται να γράψεις
εσύ κάποια από τα μέρη του fast-import/bookmark integration.

Αν, από την άλλη, σε ενδιαφέρει μόνο το ένα μέλος του συγχρονισμού
(π.χ. θέλεις να τραβάς από git αλλαγές σε ένα τοπικό hg clone), μπορείς
να δουλέψεις άνετα με το 'convert' extension του hg.  Εγώ αυτό κάνω για
να συντηρώ κάποια προσωπικά patches πάνω από το origin/master branch του
git tree του GNU Emacs.

Δες και τα εξής wiki pages για περισσότερες πληροφορίες:

  http://mercurial.selenic.com/wiki/BookmarksExtension
  http://mercurial.selenic.com/wiki/ConvertExtension
  http://mercurial.selenic.com/wiki/FastImportExtension



More information about the Linux-greek-users mailing list