Menggunakan Git & SVN dengan Git sebagai server pusat

Perusahaan saya menggunakan Git untuk kontrol versi tetapi kami sedang mengerjakan proyek dengan perusahaan lain yang menggunakan SVN (mereka menolak menggunakan Git). Saya perlu menyiapkan server Git kami sebagai server pusat dan menyediakan akses SVN ke sana. Saya tahu git-svn berfungsi dengan baik untuk menggunakan Git sementara SVN adalah server pusat, tetapi bagaimana cara memberikan akses SVN ke repositori Git?

Catatan: Saya melihat Github sekarang menyediakan akses SVN ke repositori Git mereka. Adakah yang tahu bagaimana mereka melakukannya?


person kelloti    schedule 17.12.2010    source sumber
comment
Github menggunakan gateway SVN-ke-Git yang dikembangkan secara internal. Sejauh ini mereka bungkam mengenai pengungkapan sumber-sumber tersebut; Saya ragu mereka akan melakukannya.   -  person cdhowie    schedule 17.12.2010
comment
Sedikit lebih banyak latar belakang: kami menggunakan gitolite untuk server git. Mungkin seseorang harus mengajukan petisi/membantu gitolite untuk menghasilkan solusi?   -  person kelloti    schedule 17.12.2010
comment
Ini jelas bukan jawaban yang valid, tapi saya akan memberitahu mereka, Sulit #$@!, Anda menggunakan git untuk proyek ini.   -  person haydenmuhl    schedule 17.12.2010
comment
@haydenmuhl - Saya menyukainya! sayangnya menurutku itu tidak akan berhasil   -  person kelloti    schedule 17.12.2010
comment
Entah mereka menggunakan git, atau mereka tidak mendapatkan kontrak.   -  person user502515    schedule 17.12.2010


Jawaban (3)


Ya, Anda dapat menggunakan SubGit:

Buat repositori SVN kosong

$ svnadmin create path/for/svn/repository

Konfigurasikan untuk terhubung dengan repositori Git Anda menggunakan SubGit:

$ subgit configure path/for/svn/repository
$ #edit path/for/svn/repository/conf/subgit.conf to set git.default.repository (absolute or relative path to your bare Git repository)

Mulai sinkronisasi berkelanjutan:

$ subgit install path/for/svn/repository

Hasilnya, antarmuka SVN dan Git akan dapat dibaca dan ditulis.

GitHub menggunakan pendekatan lain, seperti yang saya tahu: mereka mengimplementasikan antarmuka SVN yang mengakses Git saat itu juga. Pendekatan ini mempunyai kelebihan dan kekurangan tersendiri.

person Dmitry Pavlenko    schedule 22.08.2012
comment
Itu pilihan yang bagus. Saya berharap itu tersedia 1,5 tahun yang lalu :( - person kelloti; 22.08.2012

Cara kasar yang dapat saya pikirkan adalah dengan menyiapkan repositori svn di dalam jaringan Anda, checkout dari sana menggunakan git-svn, tambahkan git repo` asli Anda sebagai remote, tarik dari sana dan dorong ke remote svn. Saya tidak tahu apakah itu akan berfungsi atau dapat diandalkan tetapi itu harus menghasilkan semacam cermin. Anda dapat menyinkronkan sisi Anda menggunakan beberapa kait yang ditendang ketika terjadi dorongan untuk memperbarui cermin SVN. Adapun sebaliknya (ketika klien Anda berkomitmen pada repositori SVN), Anda harus memikirkan hal lain untuk itu.

person Noufal Ibrahim    schedule 17.12.2010
comment
Ya, saya telah memikirkan untuk menggunakan kait sebagai cara untuk menyinkronkan SVN & git, tetapi tampaknya sangat rawan kesalahan, jadi saya berharap seseorang memiliki pengalaman melakukannya. - person kelloti; 17.12.2010
comment
Nah, Anda punya masalah yang aneh jadi... :) - person Noufal Ibrahim; 17.12.2010

Oke, saya akan menjawab pertanyaan saya sendiri dengan jawaban yang buruk, tapi layak (imo). Saya dapat menggunakan file patch standar untuk mengirim perubahan antara kedua perusahaan kami. Manajer saya yakin ini adalah solusi yang dapat diterima, namun saya sebenarnya tidak menyukainya


EDIT: Menanggapi Noufal Ibrahim, saya berpikir bahwa dengan menggunakan Tailor dalam kombinasi dengan skrip kait saya mungkin benar-benar memilikinya solusi otomatis yang mungkin benar-benar berfungsi. Blog ini memiliki deskripsi bagus untuk menggunakan Tailor untuk menyiapkan mirror SVN.

person kelloti    schedule 17.12.2010
comment
Ya, ada quilt dan Penjahit yang mungkin membuat hidup Anda sedikit lebih mudah. - person Noufal Ibrahim; 17.12.2010