Διαχείριση pull-requests σε mirror repository

George Notaras gnot at g-loaded.eu
Sun Dec 1 09:15:42 EET 2013


On 30/11/2013 21:42, Giorgos Keramidas wrote:
> On Sat, 30 Nov 2013 09:56:27 +0200, George Notaras
> <gnot at g-loaded.eu> wrote:

>> Πώς θα έπρεπε να διαχειριστεί κανείς pull requests στο Β, ώστε:
>> 
>> - οι αλλαγές να μεταφερθούν στο Α, χωρίς να διαταραχτεί η 
>> αλληλουχία των commits και να συνεχίσει το Β να αποτελεί ακριβές 
>> mirror του Α.
>> 
>> - τα στοιχεία του committer να εμφανίζονται σωστά και στις δύο 
>> υπηρεσίες.

> Δεν υπάρχει τρόπος για συγχώνευση των pull requests από bitbucket και
> github απ' όσο ξέρω.  Τουλάχιστον όχι με αυτοματοποιημένο τρόπο, ο
> οποίος να είναι καλά 'integrated' με το web UI και των δύο.

Όντως δεν φαίνεται να υπάρχει καθαρός τρόπος να γίνουν αυτά.
Πάντως χθες ανακάλυψα ένα post[1] στο blog του Github που δίνει μια
εύκολη λύση στο πρόβλημα της μεταφοράς των αλλαγών, που περιέχονται σε
ένα pull request στο Github, στο repository στο Bitbucket.

Αν στο URL της σελίδας του pull request προσθέσουμε την κατάληξη
'.patch', τότε εμφανίζεται ένα plain text περιεχόμενο με όλες τις
αλλαγές σε μορφή patch. Τώρα, γιατί αυτό θα έπρεπε να υπάρχει ως
πληροφορία σε ένα blog post με 'Github Secrets' και όχι ως προφανής
επιλογή στη σελίδα του pull request είναι αξιοπερίεργο!

Οπότε, αν πάρουμε αυτό το patch και το κάνουμε apply στο hg repository,
τότε το αυτοματοποιημένο mirroring θα μεταφέρει τις αλλαγές από το Α στο
Β χωρίς να υπάρξει κανένα πρόβλημα με την αλληλουχία των changesets.
Επίσης, αν ο contributor έχει λογαριασμό και στις δύο υπηρεσίες, τότε
ελπίζω πως τα commits θα δείχνουν το σωστό συγγραφέα, οπότε πιστεύω πως
λύνεται και αυτό.

Δηλαδή, θεωρητικά πάντα, μπορεί να δέχεται κανείς pull requests και στο
github mirror με την προϋπόθεση ότι δεν θα τις κάνει ποτέ merge,
αλλά θα τις μεταφέρει ως patch στο κύριο repository (hg).

Αυτό που μένει τώρα είναι να φτιάξω από έναν fake χρήστη στο bitbucket
και στο github και να κάνω μερικές δοκιμές.

> Μπορείς πάντα να στήσεις 2-way merge των δύο repositories με cron 
> jobs και δικά σου merge scripts, αλλά αυτό δεν έχει καμία σχέση με 
> αυτά που εμφανίζονται ως 'pull requests' στο κάθε UI.

Η αλήθεια είναι ότι θα ήθελα να αποφύγω κάτι περίπλοκο.

> Γιατί δεν ορίζεις απλά το ένα από τα δύο repositories ως το 'επίσημο'
> repository, κλείνοντας τα pull requests από το άλλο;

Το 'επίσημο' repository είναι στο bitbucket, αλλά θα ήθελα να εξαντλήσω
όλα τα περιθώρια πριν κλείσω τα pull requests στο github.

>  Δε νομίζω να
> υπάρχει πλέον προγραμματιστής που να μην έχει επαφή τόσο με github
> όσο και με bitbucket :-P

Αυτό ισχύει (αν και από ό,τι βλέπω το github.com/keramida δίνει error
404! :P)


[1] https://github.com/blog/967-github-secrets


More information about the Linux-greek-users mailing list