Periksa cabang jauh menggunakan git svn

188

Saya telah memeriksa repositori svn menggunakan git svn. Sekarang saya perlu checkout salah satu cabang dan melacaknya. Mana cara terbaik untuk melakukannya?

markovuksanovic
sumber

Jawaban:

355

Tata letak Subversion standar

Buat klon git yang mencakup trunk, tag, dan cabang Subversion Anda

git svn clone http://svn.example.com/project -T trunk -b branch -t tag

The --stdlayoutpilihan adalah jalan pintas baik jika repositori Subversion Anda menggunakan struktur khas:

git svn clone http://svn.example.com/project --stdlayout

Buat repositori git Anda mengabaikan semua yang dilakukan repo subversi:

git svn tampilkan-abaikan >> .git / info / kecualikan

Anda sekarang dapat melihat semua cabang Subversion di sisi git:

cabang git -r

Katakanlah nama cabang di Subversion adalah waldo. Di sisi git, Anda akan lari

git checkout -b waldo-svn remote / waldo

Sufiks -svn adalah untuk menghindari peringatan dari formulir

peringatan: refname 'waldo' ambigu.

Untuk memperbarui cabang git waldo-svn, jalankan

git checkout waldo-svn
git svn rebase

Mulai dari checkout khusus bagasi

Untuk menambahkan cabang Subversion ke klon khusus trunk, modifikasi repositori git Anda .git/configmengandung

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remote / mybranch

Anda harus mengembangkan kebiasaan berlari

git svn fetch --fetch-all

untuk memperbarui semua yang git svndianggap sebagai remote terpisah. Pada titik ini, Anda dapat membuat dan melacak cabang seperti di atas. Misalnya, untuk membuat cabang git yang sesuai dengan mybranch, jalankan

git checkout -b mybranch-svn remote / mybranch

Untuk cabang tempat Anda berniat git svn dcommit, pertahankan riwayatnya linier!


Informasi lebih lanjut

Anda mungkin juga tertarik membaca jawaban untuk pertanyaan terkait .

Greg Bacon
sumber
Ini tidak berfungsi untuk saya, karena saya telah memeriksa bagasi menggunakan git svn clone .. Saya tidak mengatur cabang untuk diperiksa ... Saya pikir saya harus melakukannya terlebih dahulu.
markovuksanovic
Faktanya adalah saya menggunakan git svn clone svn.example.com/project/trunk Dan sekarang saya tidak tahu bagaimana mengatur cabang lain untuk dilacak tanpa kehilangan repo saya saat ini ...
markovuksanovic
20
Saya sarankan memberikan awalan untuk remote svn Anda. (tambahkan --prefix=svn/saat melakukan git-svn initatau git-svn clone) Ini akan menghilangkan kebutuhan untuk menambahkan akhiran pada cabang lokal Anda.
jasonkarns
Jika Anda memiliki beberapa cabang jangan lupa untuk melakukan "git checkout master" sebelum mengurus branche lainnya
Eildosa
Jika show-ignorekesalahan keluar, cobagit svn show-ignore -i trunk
Antti Haapala