Saya berpikir untuk memulai proyek kecil dan saya ingin membuat versinya dengan git.
Bitbucket sepertinya pilihan yang bagus untukku dengan paket gratisan mereka. Saya ingin menggunakannya sebagai alat utama untuk bekerja dengan git karena mereka memiliki alat yang bagus seperti antarmuka web, klien Mac OS, dan sebagainya. Tetapi, untuk mendapatkan perlindungan yang lebih tinggi dari kerusakan yang tidak disengaja yang dapat disebabkan oleh penggunaan layanan pihak ketiga, saya juga ingin menginstal git pada NAS saya sebagai salinan cadangan kedua dari repositori.
Sekarang pertanyaan saya adalah, apakah mungkin untuk membuat repositori pada dua host yang berbeda dan kemudian tetap menyinkronkannya? Sebagai contoh, misalkan sekali seminggu saya memperbarui repositori di NAS saya agar sesuai dengan yang ada di Bitbucket. Kemudian, seandainya terjadi sesuatu dengan Bitbucket, saya masih akan memiliki repositori penuh dengan sejarah penuh pengembangan pada penyimpanan NAS lokal saya.
Dan adakah cara untuk mengimpor repositori yang sudah ada dengan riwayat lengkap ke layanan git lain?
Saya pikir mirroring adalah yang saya butuhkan. Artikel ini sepertinya menggambarkan dengan tepat apa yang saya butuhkan. Dan ini salah satu juga.
Saya percaya bahwa itu akan membuat salinan lengkap dengan riwayat lengkap dan bahkan secara otomatis mengkomit versi baru ke repositori pada kedua host secara otomatis.
Apakah saya benar?
Jawaban:
Ya, itulah keindahan DVCS seperti git. Anda dapat menggunakan sejumlah repo yang berbeda dengan status yang sama dengan yang ada di bitbucket atau github.
Bahkan Anda salinan lokal (repositori di komputer Anda) biasanya merupakan tiruan penuh dari repo jarak jauh.
Satu-satunya hal yang harus Anda lakukan untuk menjaga beberapa repo tetap sinkron adalah menariknya untuk satu (biasanya disebut asal atau hulu) dan mendorong ke salinan cadangan.
sumber
Inilah solusi teruji untuk masalah ini: Sinkronisasi Otomatis 2 Repositori Remote Git
Sebuah skrip sederhana untuk menyinkronkan 2 repositori Git jarak jauh
Saya telah mencari di web untuk skrip sederhana yang akan disinkronkan. 2 repositori jarak jauh tetapi saya tidak dapat menemukan skrip seperti itu walaupun banyak yang tampaknya mencarinya! Jadi saya telah membuat 2 repositori tes sederhana dan mulai menguji dan membangun skrip tersebut.
Apa yang harus dilakukan skrip seperti itu?
Secara umum, langkah-langkah untuk melakukannya sederhana: 1. Mengkloning repositori pertama 1. Tambahkan yang kedua sebagai repositori jarak jauh tambahan 1. ambil semua yang ada di repositori kedua 1. dorong repositori lokal yang diperbarui ke dalam 2 repositori jarak jauh.
Masalah yang tersisa adalah - apakah sakelar yang benar untuk semua perintah git di atas?
Jadi begini...
Skrip gisp 2repos-sync.sh
CATATAN - skrip ini tidak menyelesaikan kasus konflik antara konten repositori!
sumber
Saya menggunakan GitLab pribadi untuk menyimpan semua repositori saya, jadi saya hanya memiliki satu sumber yang saya dorong dan tarik ketika saya melakukan pengembangan sehari-hari.
Tetapi, untuk proyek open source, GitHub adalah komunitas yang jauh lebih bersemangat, jadi, jika saya ingin menerima kontribusi komunitas untuk proyek saya, saya menggunakan sistem web hook GitLab untuk melakukan ping ke server yang saya jalankan yang kemudian memperbarui repositori publik saya di GitHub.
Ini memungkinkan saya untuk memperlakukan GitHub sebagai remote lain yang dapat saya tarik dari ketika seseorang berkontribusi - kemudian saya menggabungkan --tidak-ff secara lokal, dan ada aliran bagaimana semua repositori primer dan publik saya mendistribusikan perubahan.
sumber