Ini ialah arahan git-svn yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
git-svn - Operasi dua arah antara repositori Subversion dan Git
SINOPSIS
pergi svn [pilihan] [hujah]
DESCRIPTION
pergi svn ialah saluran mudah untuk set perubahan antara Subversion dan Git. Ia menyediakan a
aliran dua arah perubahan antara Subversion dan repositori Git.
pergi svn boleh menjejaki repositori Subversion standard, mengikut yang biasa
susun atur "batang/cawangan/tag", dengan pilihan --stdlayout. Ia juga boleh mengikut cawangan dan
tag dalam sebarang susun atur dengan pilihan -T/-t/-b (lihat pilihan untuk INIT di bawah, dan juga
mengklon perintah).
Setelah menjejaki repositori Subversion (dengan mana-mana kaedah di atas), repositori Git
boleh dikemas kini daripada Subversion oleh ambil arahan dan Subversion dikemas kini daripada Git oleh
dcommit perintah.
PERINTAH
INIT
Memulakan repositori Git kosong dengan direktori metadata tambahan untuk pergi svn.
URL Subversion boleh ditentukan sebagai hujah baris arahan, atau sebagai URL penuh
hujah kepada -T/-t/-b. Secara pilihan, direktori sasaran untuk beroperasi boleh ditentukan
sebagai hujah kedua. Biasanya arahan ini memulakan direktori semasa.
-T , --batang= , -t , --tags= ,
-b , --cawangan= , -s, --stdlayout
Ini adalah pilihan baris arahan pilihan untuk init. Setiap bendera ini boleh menunjuk ke
laluan repositori relatif (--tags=project/tags) atau url penuh
(--tags=https://foo.org/project/tags). Anda boleh menentukan lebih daripada satu --tag dan/atau
--branches pilihan, sekiranya repositori Subversion anda meletakkan tag atau cawangan
di bawah pelbagai laluan. Pilihan --stdlayout ialah cara tetapan ringkas
batang, tag, cawangan sebagai laluan relatif, yang merupakan lalai Subversion. Jika ada
daripada pilihan lain diberikan juga, mereka diutamakan.
--tiada-metadata
Menetapkan noMetadata pilihan dalam konfigurasi [svn-remote]. Pilihan ini tidak
disyorkan, sila baca svn.noMetadata bahagian halaman manual ini sebelum menggunakan
pilihan ini.
--gunakan-svm-props
Menetapkan gunakanSvmProps pilihan dalam konfigurasi [svn-remote].
--use-svnsync-props
Menetapkan gunakanSvnsyncProps pilihan dalam konfigurasi [svn-remote].
--rewrite-root=
Menetapkan tulis semulaRoot pilihan dalam konfigurasi [svn-remote].
--tulis semula-uuid=
Menetapkan tulis semulaUUID pilihan dalam konfigurasi [svn-remote].
--nama pengguna=
Untuk pengangkutan yang SVN mengendalikan pengesahan untuk (http, https dan svn biasa),
nyatakan nama pengguna. Untuk pengangkutan lain (cth svn+ssh://), anda mesti sertakan
nama pengguna dalam URL, cth svn+ssh://[e-mel dilindungi]/projek
--awalan=
Ini membolehkan seseorang untuk menentukan awalan yang ditambahkan pada nama alat kawalan jauh jika
batang/cabang/tag dinyatakan. Awalan tidak secara automatik termasuk a
garis miring di belakang, jadi pastikan anda memasukkan satu dalam hujah jika itu yang anda lakukan
mahu. Jika --branches/-b dinyatakan, awalan mesti menyertakan garis miring mengekor.
Menetapkan awalan (dengan garis miring mengekor) amat digalakkan dalam apa jua keadaan, seperti
rujukan SVN-tracking anda kemudiannya akan terletak di "refs/remotes/$prefix/", yang is
serasi bersama Git sendiri pengesanan jauh ref susun atur (refs/remote/$remote/).
Menetapkan awalan juga berguna jika anda ingin menjejak berbilang projek yang dikongsi
repositori biasa. Secara lalai, awalan ditetapkan kepada asal /.
Nota
Sebelum Git v2.0, awalan lalai ialah "" (tiada awalan). Ini bermakna
Rujukan penjejakan SVN diletakkan di "refs/remotes/*", yang tidak serasi dengan cara
Rujukan penjejakan jauh Git sendiri disusun. Jika anda masih mahukan yang lama
lalai, anda boleh mendapatkannya dengan menghantar --prefix "" pada baris arahan
(--prefix="" mungkin tidak berfungsi jika Perl's Getopt::Long ialah < v2.37).
--ignore-paths=
Apabila diluluskan ke INIT or mengklon ungkapan biasa ini akan disimpan sebagai konfigurasi
kunci. Lihat ambil untuk penerangan tentang --abaikan-laluan.
--include-paths=
Apabila diluluskan ke INIT or mengklon ungkapan biasa ini akan disimpan sebagai konfigurasi
kunci. Lihat ambil untuk penerangan tentang --termasuk-laluan.
--no-minimize-url
Apabila menjejak berbilang direktori (menggunakan --stdlayout, --branches, atau --tags
pilihan), git svn akan cuba menyambung ke akar (atau tahap tertinggi yang dibenarkan)
daripada repositori Subversion. Lalai ini membenarkan penjejakan sejarah yang lebih baik jika
keseluruhan projek dialihkan dalam repositori, tetapi boleh menyebabkan masalah pada
repositori di mana sekatan akses baca ada. lulus
--no-minimize-url akan membenarkan git svn menerima URL sebagaimana adanya tanpa cuba melakukannya
sambung ke direktori peringkat lebih tinggi. Pilihan ini dimatikan secara lalai apabila hanya satu
URL/cawangan dijejaki (ia tidak mendatangkan kebaikan).
ambil
Ambil semakan yang tidak diambil daripada alat kawalan jauh Subversion yang kami jejaki. Nama yang
[svn-remote "..."] bahagian dalam fail $GIT_DIR/config boleh ditentukan sebagai pilihan
hujah baris perintah.
Ini secara automatik mengemas kini rev_map jika perlu (lihat $GIT_DIR/svn/**/.rev_map.* in
bahagian FAIL di bawah untuk butiran).
--waktu tempatan
Simpan masa komit Git dalam zon waktu tempatan dan bukannya UTC. Ini menjadikan pergi log
(walaupun tanpa --date=local) tunjukkan masa yang sama dengan log svn dalam local
Zon masa.
Ini tidak mengganggu operasi antara repositori Subversion anda
diklon daripada, tetapi jika anda ingin repositori Git tempatan anda dapat melakukannya
interoperate dengan repositori Git tempatan orang lain, sama ada jangan gunakan ini
pilihan atau anda berdua harus menggunakannya dalam zon waktu tempatan yang sama.
--ibu bapa
Ambil hanya daripada induk SVN bagi HEAD semasa.
--ignore-paths=
Ini membolehkan seseorang menentukan ungkapan biasa Perl yang akan menyebabkan pelangkauan
semua laluan yang sepadan dari daftar keluar dari SVN. The --abaikan-laluan pilihan harus sepadan
untuk setiap ambil (termasuk pengambilan automatik disebabkan oleh mengklon, dcommit, melunaskan semula, Dll)
pada repositori yang diberikan.
kunci konfigurasi: svn-remote. .abaikan-laluan
Jika kunci konfigurasi laluan abaikan ditetapkan, dan pilihan baris arahan juga
diberikan, kedua-dua ungkapan biasa akan digunakan.
Contoh:
Langkau direktori "doc*" untuk setiap pengambilan
--ignore-paths="^doc"
Langkau "cawangan" dan "tag" direktori peringkat pertama
--ignore-paths="^[^/]+/(?:cawangan|tag)"
--include-paths=
Ini membolehkan seseorang menentukan ungkapan biasa Perl yang akan menyebabkan kemasukan
hanya padanan laluan dari daftar keluar daripada SVN. The --termasuk-laluan pilihan harus
sepadan untuk setiap ambil (termasuk pengambilan automatik disebabkan oleh mengklon, dcommit, melunaskan semula,
dll) pada repositori yang diberikan. --abaikan-laluan diutamakan --termasuk-laluan.
kunci konfigurasi: svn-remote. .include-paths
--log-window-size=
Ambil entri log setiap permintaan apabila mengimbas sejarah Subversion. Lalainya ialah
100. Untuk repositori Subversion yang sangat besar, nilai yang lebih besar mungkin diperlukan untuk
mengklon/ambil untuk disiapkan dalam masa yang munasabah. Tetapi nilai yang terlalu besar boleh membawa kepada
penggunaan memori yang lebih tinggi dan permintaan tamat masa.
mengklon
Larian INIT and ambil. Ia secara automatik akan mencipta direktori berdasarkan nama asas
URL yang dihantar kepadanya; atau jika hujah kedua diluluskan; ia akan mencipta direktori
dan bekerja di dalamnya. Ia menerima semua hujah bahawa INIT and ambil arahan
terima; dengan pengecualian --ambil-semua and --ibu bapa. Selepas repositori diklon,
yang ambil arahan akan dapat mengemas kini semakan tanpa menjejaskan pokok kerja;
dan juga melunaskan semula arahan akan dapat mengemas kini pokok kerja dengan yang terkini
perubahan.
--pelihara-kosong-dirs
Buat fail pemegang tempat dalam repositori Git tempatan untuk setiap direktori kosong
diambil daripada Subversion. Ini termasuk direktori yang menjadi kosong dengan mengalih keluar
semua entri dalam repositori Subversion (tetapi bukan direktori itu sendiri). The
fail pemegang tempat juga dijejaki dan dialih keluar apabila tidak perlu lagi.
--placeholder-filename=
Tetapkan nama fail pemegang tempat yang dibuat oleh --preserve-empty-dirs. Lalai:
".giignore"
melunaskan semula
Ini mengambil semakan daripada induk SVN bagi HEAD semasa dan mengasaskan semula semasa
(tidak komited kepada SVN) berusaha menentangnya.
Ini berfungsi sama dengan kemas kini svn atau pergi tarik kecuali ia mengekalkan sejarah linear
bersama pergi melunaskan semula bukan pergi bergabung untuk kemudahan dkomit dengan pergi svn.
Ini menerima semua pilihan itu pergi svn ambil and pergi melunaskan semula terima. Walau bagaimanapun,
--ambil-semua hanya mengambil dari [svn-remote] semasa, dan bukan semua [svn-remote]
takrifan.
suka pergi melunaskan semula; ini memerlukan pokok kerja yang bersih dan tidak mempunyai komitmen
perubahan.
Ini secara automatik mengemas kini rev_map jika perlu (lihat $GIT_DIR/svn/**/.rev_map.* in
bahagian FAIL di bawah untuk butiran).
-l, --tempatan
Jangan ambil dari jauh; hanya berlari pergi melunaskan semula terhadap komit terakhir yang diambil daripada
SVN huluan.
dcommit
Komit setiap perbezaan daripada cawangan semasa terus ke repositori SVN, dan kemudian
rebase atau set semula (bergantung pada sama ada terdapat perbezaan antara SVN dan head).
Ini akan membuat semakan dalam SVN untuk setiap komit dalam Git.
Apabila nama cawangan Git pilihan (atau nama objek komit Git) ditentukan sebagai
hujah, subperintah berfungsi pada cawangan yang ditentukan, bukan pada cawangan semasa.
Penggunaan dcommit lebih disukai untuk set-pokok (di bawah).
--tiada-rebase
Selepas melakukan, jangan letak semula atau set semula.
--commit-url
Komit pada URL SVN ini (laluan penuh). Ini bertujuan untuk membolehkan sedia ada pergi svn
repositori yang dibuat dengan satu kaedah pengangkutan (cth svn:// atau http:// untuk
dibaca tanpa nama) untuk digunakan semula jika pengguna kemudian diberi akses kepada alternatif
kaedah pengangkutan (cth svn+ssh:// atau https://) untuk komit.
kunci konfigurasi: svn-remote. .commiturl
kunci konfigurasi: svn.commiturl (menimpa semua svn-remote. pilihan .commiturl)
Ambil perhatian bahawa URL SVN bagi kunci konfigurasi commiturl termasuk cawangan SVN. Jika awak
sebaliknya mahu menetapkan URL komit untuk keseluruhan penggunaan repositori SVN
svn-remote. .pushurl sebaliknya.
Menggunakan pilihan ini untuk sebarang tujuan lain (jangan tanya) adalah sangat tidak digalakkan.
--mergeinfo=
Tambahkan maklumat gabungan yang diberikan semasa dcommit (cth
--mergeinfo="/branches/foo:1-10"). Semua versi pelayan svn boleh menyimpan ini
maklumat (sebagai harta), dan pelanggan svn bermula dari versi 1.5 boleh membuat
penggunaannya. Untuk menentukan maklumat gabungan daripada berbilang cawangan, gunakan satu ruang
aksara antara cawangan (--mergeinfo="/branches/foo:1-10
/cawangan/bar:3,5-6,8")
kunci konfigurasi: svn.pushmergeinfo
Pilihan ini akan menyebabkan git-svn cuba mengisi secara automatik
svn: mergeinfo harta dalam repositori SVN apabila boleh. Pada masa ini, ini boleh
hanya dilakukan apabila dmelakukan gabungan tidak pantas di mana semua ibu bapa kecuali
pertama telah ditolak ke dalam SVN.
--interaktif
Minta pengguna mengesahkan bahawa set tampalan sebenarnya harus dihantar ke SVN. Untuk setiap
patch, seseorang boleh menjawab "ya" (terima patch ini), "tidak" (buang patch ini), "semua"
(terima semua tampalan), atau "berhenti".
pergi svn dcommit kembali serta-merta jika jawapan adalah "tidak" atau "berhenti", tanpa
melakukan apa sahaja kepada SVN.
cawangan
Buat cawangan dalam repositori SVN.
-m, --mesej
Membenarkan untuk menentukan mesej komit.
-t, --tag
Buat teg dengan menggunakan tags_subdir dan bukannya branches_subdir yang ditentukan
semasa git svn init.
-d , --destination=
Jika lebih daripada satu --branches (atau --tags) pilihan diberikan kepada INIT or mengklon
arahan, anda mesti menyediakan lokasi cawangan (atau tag) yang anda ingin buat
dalam repositori SVN. menentukan laluan mana yang hendak digunakan untuk mencipta cawangan atau
tag dan harus sepadan dengan corak di sebelah kiri salah satu yang dikonfigurasikan
cawangan atau teg refspecs. Anda boleh melihat refspec ini dengan arahan
git config --get-all svn-remote. .cawangan
git config --get-all svn-remote. .tag
di mana ialah nama repositori SVN seperti yang ditentukan oleh pilihan -R untuk
INIT (atau "svn" secara lalai).
--nama pengguna
Tentukan nama pengguna SVN untuk melaksanakan komit sebagai. Pilihan ini mengatasi
nama pengguna sifat konfigurasi.
--commit-url
Gunakan URL yang ditentukan untuk menyambung ke repositori Subversion destinasi. Ini adalah
berguna dalam kes di mana repositori SVN sumber adalah baca sahaja. Pilihan ini
mengatasi sifat konfigurasi commiturl.
git config --get-all svn-remote. .commiturl
--ibu bapa
Buat folder induk. Parameter ini bersamaan dengan parameter --parents on
svn cp arahan dan berguna untuk susun atur repositori bukan standard.
tag
Buat teg dalam repositori SVN. Ini adalah singkatan untuk cawangan -t.
log
Ini sepatutnya memudahkan untuk mencari mesej log svn apabila pengguna svn merujuk
-r/--nombor semakan.
Ciri berikut daripada 'svn log' disokong:
-r [: ], --semakan= [: ]
disokong, argumen bukan angka tidak: HEAD, NEXT, BASE, PREV, dll ...
-v, --verbose
ia tidak sepenuhnya serasi dengan --verbose output dalam svn log, tetapi
cukup dekat.
--had=
TIDAK sama dengan --max-count, tidak mengira komit yang digabungkan/dikecualikan
--bertambah
disokong
Ciri-ciri baru:
--tunjuk-komit
menunjukkan Git commit sha1, juga
--satu garisan
versi kami --pretty=oneline
Nota
SVN sendiri hanya menyimpan masa dalam UTC dan tidak ada yang lain. Pelanggan svn biasa
menukar masa UTC kepada waktu tempatan (atau berdasarkan persekitaran TZ=). ini
perintah mempunyai tingkah laku yang sama.
Sebarang hujah lain dihantar terus kepada pergi log
menyalahkan
Tunjukkan semakan dan pengarang yang terakhir diubah suai setiap baris fail. Keluaran ini
mod adalah serasi format dengan output 'svn blame' secara lalai. Seperti SVN
perintah menyalahkan, perubahan tidak komited tempatan dalam pokok kerja diabaikan; versi
daripada fail dalam semakan HEAD diberi anotasi. Hujah yang tidak diketahui dihantar terus
kepada pergi menyalahkan.
--git-format
Menghasilkan output dalam format yang sama seperti pergi menyalahkan, tetapi dengan nombor semakan SVN
bukannya Git commit hash. Dalam mod ini, perubahan yang belum dilakukan
SVN (termasuk suntingan salinan kerja tempatan) ditunjukkan sebagai semakan 0.
cari-rev
Apabila diberi nombor semakan SVN borang rN, mengembalikan komit Git yang sepadan
hash (ini secara pilihan boleh diikuti oleh tree-ish untuk menentukan cawangan mana yang sepatutnya
dicari). Apabila diberi tree-ish, mengembalikan nombor semakan SVN yang sepadan.
-B, --sebelum ini
Jangan memerlukan padanan tepat jika diberi semakan SVN, sebaliknya cari komit
sepadan dengan keadaan repositori SVN (pada cawangan semasa) di
semakan yang ditetapkan.
-A, --selepas
Tidak memerlukan padanan tepat jika diberi semakan SVN; jika tidak ada yang tepat
perlawanan mengembalikan perlawanan terdekat mencari ke hadapan dalam sejarah.
set-pokok
Anda harus mempertimbangkan untuk menggunakan dcommit bukannya arahan ini. Komit dinyatakan komitmen atau
objek pokok kepada SVN. Ini bergantung pada data pengambilan anda yang diimport yang dikemas kini. ini
tidak membuat sebarang percubaan untuk melakukan tampalan apabila melakukan SVN, ia hanya
menimpa fail dengan yang dinyatakan dalam pepohon atau komit. Semua penggabungan diandaikan
telah berlaku secara bebas daripada pergi svn fungsi.
cipta-abaikan
Secara rekursif mencari harta svn:ignore pada direktori dan mencipta padanan
.giignore fail. Fail yang terhasil dipentaskan untuk dilakukan, tetapi tidak
komited. Gunakan -r/--revision untuk merujuk kepada semakan tertentu.
tunjuk-abaikan
Secara rekursif mencari dan menyenaraikan sifat svn:ignore pada direktori. Outputnya ialah
sesuai untuk ditambahkan pada fail $GIT_DIR/info/exclude.
mkdirs
Percubaan untuk mencipta semula direktori kosong yang teras Git tidak dapat menjejaki berdasarkan maklumat
dalam $GIT_DIR/svn/ /unhandled.log fail. Direktori kosong secara automatik
dicipta semula apabila menggunakan "klon git svn" dan "git svn rebase", jadi "mkdirs" bertujuan untuk
gunakan selepas arahan seperti "git checkout" atau "git reset". (Lihat
svn-remote. Pilihan fail konfigurasi .automkdirs untuk maklumat lanjut.)
commit-diff
Melakukan perbezaan dua hujah tree-ish daripada baris arahan. Perintah ini tidak
tidak bergantung pada berada di dalam repositori git svn init-ed. Perintah ini mengambil masa tiga
hujah, (a) pokok asal untuk dibezakan, (b) hasil pokok baharu, (c) URL
daripada repositori Subversion sasaran. Hujah akhir (URL) mungkin ditinggalkan jika anda
sedang bekerja dari a pergi svn-repositori sedar (yang telah dimulakan dengan pergi svn). The
-r pilihan diperlukan untuk ini.
maklumat
Menunjukkan maklumat tentang fail atau direktori yang serupa dengan apa yang disediakan oleh 'svn info'. Adakah
tidak menyokong hujah -r/--revision pada masa ini. Gunakan pilihan --url untuk mengeluarkan sahaja
nilai URL: lapangan.
proplist
Menyenaraikan sifat yang disimpan dalam repositori Subversion tentang fail tertentu atau
direktori. Gunakan -r/--semakan untuk merujuk kepada semakan Subversi tertentu.
propget
Mendapatkan sifat Subversion yang diberikan sebagai hujah pertama, untuk fail. A tertentu
semakan boleh ditentukan dengan -r/--semakan.
pertunjukan-luaran
Menunjukkan luaran Subversion. Gunakan -r/--revision untuk menentukan semakan tertentu.
gc
Mampatkan $GIT_DIR/svn/ /unhandled.log fail dan alih keluar
$GIT_DIR/svn/ /indeks fail.
menetapkan semula
Membatalkan kesan daripada ambil kembali kepada semakan yang ditetapkan. Ini membolehkan anda
semulaambil semakan SVN. Biasanya kandungan semakan SVN tidak boleh berubah
and menetapkan semula sepatutnya tidak perlu. Walau bagaimanapun, jika kebenaran SVN berubah, atau jika anda mengubahnya
pilihan --ignore-paths anda, a ambil mungkin gagal dengan "tidak dijumpai dalam komit" (fail tidak
sebelum ini kelihatan) atau "checksum mismatch" (terlepas pengubahsuaian). Jika masalah
fail tidak boleh diabaikan selama-lamanya (dengan --ignore-paths) satu-satunya cara untuk membaiki repo
adalah dengan menggunakan menetapkan semula.
Hanya rev_map dan refs/remotes/git-svn diubah (lihat $GIT_DIR/svn/**/.rev_map.*
dalam bahagian FAIL di bawah untuk butiran). ikut menetapkan semula dengan ambil dan kemudian pergi menetapkan semula
or pergi melunaskan semula untuk memindahkan cawangan tempatan ke pokok baharu.
-r , --semakan=
Nyatakan semakan terbaharu untuk disimpan. Semua semakan kemudian dibuang.
-p, --ibu bapa
Buang semakan yang ditentukan juga, sebaliknya kekalkan induk terdekat.
Contoh:
Andaikan anda mempunyai perubahan setempat dalam "master", tetapi anda perlu mengambil semula "r2".
r1---r2---r3 alat kawalan jauh/git-svn
\
A---B tuan
Betulkan masalah abaikan laluan atau kebenaran SVN yang menyebabkan "r2" tidak lengkap
di tempat pertama. Kemudian:
git svn reset -r2 -p
git svn fetch
r1---r2'--r3' alat kawalan jauh/git-svn
\
r2---r3---A---B tuan
Kemudian betulkan "tuan" dengan pergi melunaskan semula. Jangan guna pergi bergabung atau sejarah anda tidak akan
serasi dengan masa depan dcommit!
git rebase --onto remotes/git-svn A^ master
r1---r2'--r3' alat kawalan jauh/git-svn
\
A'--B' tuan
PILIHAN
--shared[=(false|true|umask|group|semua|dunia|semua orang)], --template=
Hanya digunakan dengan INIT perintah. Ini dihantar terus kepada pergi INIT.
-r , --ulang kaji
Digunakan dengan ambil perintah.
Ini membolehkan julat semakan untuk sejarah separa/cauterized disokong. $NUMBER,
$NUMBER1:$NUMBER2 (julat angka), $NUMBER:HEAD dan BASE:$NUMBER semuanya disokong.
Ini membolehkan anda membuat cermin separa semasa menjalankan pengambilan; tetapi secara amnya tidak
disyorkan kerana sejarah akan dilangkau dan hilang.
-, --stdin
Hanya digunakan dengan set-pokok perintah.
Baca senarai komit daripada stdin dan komitkannya dalam susunan terbalik. Hanya yang terkemuka
sha1 dibaca dari setiap baris, jadi pergi senarai semula --cantik=satu talian output boleh digunakan.
--rmdir
Hanya digunakan dengan dcommit, set-pokok and commit-diff menyuruh.
Alih keluar direktori daripada pepohon SVN jika tiada fail tertinggal. SVN boleh
versi direktori kosong, dan ia tidak dialih keluar secara lalai jika tiada fail
tertinggal di dalamnya. Git tidak boleh versi direktori kosong. Mendayakan bendera ini akan menjadikan
komited kepada SVN bertindak seperti Git.
kunci konfigurasi: svn.rmdir
-e, - edit
Hanya digunakan dengan dcommit, set-pokok and commit-diff menyuruh.
Edit mesej komit sebelum melakukan SVN. Ini dimatikan secara lalai untuk objek
yang melakukan, dan dipaksa apabila melakukan objek pokok.
kunci konfigurasi: svn.edit
-l , --cari-salinan-lebih sukar
Hanya digunakan dengan dcommit, set-pokok and commit-diff menyuruh.
Mereka berdua dihantar terus ke pergi pokok berbeza; lihat git-diff-tree(1) untuk lebih lanjut
maklumat.
kunci konfigurasi: svn.l
kunci konfigurasi: svn.findcopiesharder
-A , --authors-file=
Sintaks serasi dengan fail yang digunakan oleh pergi cvsimport:
nama log masuk = Joe User[e-mel dilindungi]>
Sekiranya pilihan ini ditentukan dan pergi svn menemui nama committer SVN yang tidak
wujud dalam fail pengarang, pergi svn akan menggugurkan operasi. Pengguna kemudiannya perlu
tambah entri yang sesuai. Menjalankan semula yang sebelumnya pergi svn perintah selepas
fail pengarang diubah suai harus meneruskan operasi.
kunci konfigurasi: svn.authorsfile
--pengarang-prog=
Jika pilihan ini ditentukan, untuk setiap nama pemacu SVN yang tidak wujud dalam
pengarang, fail yang diberikan dilaksanakan dengan nama committer sebagai yang pertama
hujah. Program ini dijangka mengembalikan satu baris bentuk "Nama ",
yang akan dianggap seolah-olah termasuk dalam fail pengarang.
-q, --senyap
Membuat pergi svn kurang bertele-tele. Tentukan kali kedua untuk menjadikannya lebih ringkas.
-m, --gabung, -s , --strategi= , -p, --pelihara-bercantum
Ini hanya digunakan dengan dcommit and melunaskan semula menyuruh.
Lulus terus ke pergi melunaskan semula semasa menggunakan dcommit sekiranya pergi menetapkan semula tidak boleh digunakan (lihat
dcommit).
-n, --lari kering
Ini boleh digunakan dengan dcommit, melunaskan semula, cawangan and tag menyuruh.
Untuk dcommit, cetak siri argumen Git yang akan menunjukkan perbezaan yang akan berlaku
komited kepada SVN.
Untuk melunaskan semula, paparkan cawangan tempatan yang dikaitkan dengan repositori svn huluan
dikaitkan dengan cawangan semasa dan URL repositori svn yang akan diambil
dari.
Untuk cawangan and tag, paparkan url yang akan digunakan untuk menyalin semasa membuat
cawangan atau tag.
--guna-log-pengarang
Apabila mendapatkan semula svn commit ke dalam Git (sebagai sebahagian daripada ambil, melunaskan semula, Atau dcommit
operasi), cari baris From: atau Signed-off-by: yang pertama dalam mesej log dan
gunakan itu sebagai rentetan pengarang.
--tambah-pengarang-daripada
Apabila melakukan svn dari Git (sebagai sebahagian daripada commit-diff, set-pokok or dcommit
operasi), jika mesej log sedia ada belum mempunyai Daripada: atau
Ditandatangani-off-oleh: baris, tambahkan baris Daripada: berdasarkan rentetan pengarang komit Git. Jika
anda menggunakan ini, kemudian --use-log-author akan mendapatkan semula rentetan pengarang yang sah untuk semua
melakukan.
ADVANCED PILIHAN
-i , --ID
Ini menetapkan GIT_SVN_ID (bukannya menggunakan persekitaran). Ini membolehkan pengguna untuk
mengatasi nama semula lalai untuk diambil semasa menjejak URL tunggal. The log and
dcommit arahan tidak lagi memerlukan suis ini sebagai hujah.
-R , --svn-remote
Tentukan [svn-remote " "] untuk digunakan, ini membenarkan berbilang SVN
repositori untuk dijejaki. Lalai: "svn"
--ikut-ibu bapa
Pilihan ini hanya relevan jika kami menjejaki cawangan (menggunakan salah satu repositori
pilihan susun atur --trunk, --tags, --branches, --stdlayout). Untuk setiap cawangan yang dijejaki, cuba
untuk mengetahui dari mana semakannya disalin, dan tetapkan induk yang sesuai pada yang pertama
Git commit untuk cawangan. Ini amat membantu apabila kami menjejaki direktori
yang telah dipindahkan di dalam repositori. Jika ciri ini dilumpuhkan,
cawangan yang dicipta oleh pergi svn semuanya akan linear dan tidak berkongsi sebarang sejarah, bermakna itu
tidak akan ada maklumat di mana cawangan telah bercabang atau digabungkan. Walau bagaimanapun,
mengikuti sejarah yang panjang/berbelit-belit boleh mengambil masa yang lama, jadi lumpuhkan ciri ini
boleh mempercepatkan proses pengklonan. Ciri ini didayakan secara lalai, gunakan
--no-follow-parent untuk melumpuhkannya.
kunci konfigurasi: svn.followparent
KONFIG FAIL SAHAJA PILIHAN
svn.noMetadata, svn-remote. .noMetadata
Ini menghilangkan git-svn-id: baris pada akhir setiap komit.
Pilihan ini hanya boleh digunakan untuk import sekali sahaja sebagai pergi svn tidak akan dapat mengambil
sekali lagi tanpa metadata. Selain itu, jika anda kehilangan anda $GIT_DIR/svn/**/.rev_map.*
fail, pergi svn tidak akan dapat membina semula mereka.
. pergi svn log arahan tidak akan berfungsi pada repositori menggunakan ini, sama ada. Menggunakan ini
konflik dengan gunakanSvmProps pilihan untuk (mudah-mudahan) sebab yang jelas.
Pilihan ini TIDAK disyorkan kerana ia menyukarkan untuk mengesan rujukan lama
kepada nombor semakan SVN dalam dokumentasi sedia ada, laporan pepijat dan arkib. Jika awak
merancang untuk akhirnya berhijrah dari SVN ke Git dan pasti akan menggugurkan sejarah SVN,
mempertimbangkan git-filter-cawangan(1) sebaliknya. cawangan penapis juga membenarkan pemformatan semula
metadata untuk kemudahan membaca dan menulis semula maklumat pengarang untuk bukan "svn.authorsFile"
pengguna.
svn.useSvmProps, svn-remote. .useSvmProps
Ini membenarkan pergi svn untuk memetakan semula URL repositori dan UUID daripada cermin yang dibuat menggunakan
SVN::Mirror (atau svk) untuk metadata.
Jika semakan SVN mempunyai sifat, "svm:headrev", kemungkinan semakan itu adalah
dicipta oleh SVN::Mirror (juga digunakan oleh SVK). Harta ini mengandungi UUID repositori dan
semakan. Kami mahu menjadikannya kelihatan seperti kami mencerminkan URL asal, jadi
memperkenalkan fungsi pembantu yang mengembalikan URL identiti asal dan UUID, dan gunakan
ia apabila menjana metadata dalam mesej komit.
svn.useSvnsyncProps, svn-remote. .useSvnsyncprops
Sama seperti pilihan useSvmProps; ini adalah untuk pengguna svnsync(1) perintah
diedarkan dengan SVN 1.4.x dan lebih baru.
svn-remote. .rewriteRoot
Ini membolehkan pengguna membuat repositori daripada URL alternatif. Contohnya, an
pentadbir boleh dijalankan pergi svn pada pelayan secara tempatan (mengakses melalui fail://) tetapi ingin
untuk mengedarkan repositori dengan URL http:// atau svn:// awam dalam metadata jadi
penggunanya akan melihat URL awam.
svn-remote. .tulis semulaUUID
Sama seperti pilihan useSvmProps; ini adalah untuk pengguna yang perlu memetakan semula UUID
secara manual. Ini mungkin berguna dalam situasi di mana UUID asal tidak tersedia
melalui sama ada useSvmProps atau useSvnsyncProps.
svn-remote. .pushurl
Sama seperti Git's jauh. .pushurl, kunci ini direka bentuk untuk digunakan dalam kes di mana
url menunjuk ke repositori SVN melalui pengangkutan baca sahaja, untuk menyediakan alternatif
pengangkutan baca/tulis. Diandaikan bahawa kedua-dua kunci menghala ke repositori yang sama.
Tidak seperti commiturl, pushurl adalah laluan asas. Jika sama ada commiturl or pushurl boleh jadi
terpakai, commiturl diutamakan.
svn.brokenSymlinkWorkaround
Ini melumpuhkan semakan yang mungkin mahal untuk menyelesaikan pautan sym yang rosak yang telah didaftar masuk
SVN oleh pelanggan yang rosak. Tetapkan pilihan ini kepada "palsu" jika anda menjejaki repositori SVN dengan
banyak gumpalan kosong yang bukan symlinks. Pilihan ini boleh ditukar sementara pergi svn is
berjalan dan berkuat kuasa pada semakan seterusnya yang diambil. Jika tidak ditetapkan, pergi svn menganggap ini
pilihan untuk menjadi "benar".
svn.pathnameencoding
Ini mengarahkan git svn untuk mengekod semula nama laluan kepada pengekodan yang diberikan. Ia boleh digunakan oleh
pengguna windows dan oleh mereka yang bekerja di tempat bukan utf8 untuk mengelakkan nama fail rosak
dengan aksara bukan ASCII. Pengekodan yang sah adalah yang disokong oleh Pengekodan Perl
modul.
svn-remote. .automkdirs
Biasanya, arahan "git svn clone" dan "git svn rebase" cuba mencipta semula kosong
direktori yang terdapat dalam repositori Subversion. Jika pilihan ini ditetapkan kepada "palsu",
maka direktori kosong hanya akan dibuat jika arahan "git svn mkdirs" dijalankan
secara eksplisit. Jika tidak ditetapkan, pergi svn menganggap pilihan ini adalah "benar".
Oleh kerana pilihan noMetadata, rewriteRoot, rewriteUUID, useSvnsyncProps dan useSvmProps
semuanya mempengaruhi metadata yang dijana dan digunakan oleh pergi svn; mereka kemestian ditetapkan dalam
fail konfigurasi sebelum sebarang sejarah diimport dan tetapan ini tidak sepatutnya
berubah apabila ia ditetapkan.
Selain itu, hanya satu daripada pilihan ini boleh digunakan bagi setiap bahagian svn-remote kerana ia
menjejaskan git-svn-id: baris metadata, kecuali untuk rewriteRoot dan rewriteUUID yang boleh
digunakan bersama.
ASAS CONTOH
Menjejak dan menyumbang kepada batang projek yang diuruskan Subversion (mengabaikan teg dan
cawangan):
# Klon repo (seperti klon git):
git svn klon http://svn.example.com/project/trunk
# Masukkan direktori yang baru diklon:
batang cd
# Anda sepatutnya berada di cawangan induk, semak semula dengan 'cawangan git'
cawangan git
# Lakukan beberapa kerja dan komited secara tempatan kepada Git:
git commit...
# Sesuatu komited kepada SVN, asaskan semula perubahan setempat anda terhadap
# perubahan terkini dalam SVN:
git svn rebase
# Sekarang lakukan perubahan anda (yang dilakukan sebelum ini menggunakan Git) kepada SVN,
# serta mengemas kini secara automatik HEAD kerja anda:
git svn dcommit
# Tambahkan svn:ignore tetapan pada fail lalai Git exclude:
git svn show-ignore >> .git/info/exclude
Menjejak dan menyumbang kepada keseluruhan projek yang diuruskan Subversion (lengkap dengan batang,
tag dan cawangan):
# Klon repo dengan susun atur direktori SVN standard (seperti klon git):
git svn klon http://svn.example.com/project --stdlayout --prefix svn/
# Atau, jika repo menggunakan susun atur direktori bukan standard:
git svn klon http://svn.example.com/project -T tr -b branch -t tag --prefix svn/
# Lihat semua cawangan dan tag yang telah anda klon:
cawangan git -r
# Buat cawangan baharu dalam SVN
git svn branch waldo
# Tetapkan semula tuan anda kepada batang (atau mana-mana cawangan lain, menggantikan 'batang'
# dengan nama yang sesuai):
git reset --hard svn/trunk
# Anda hanya boleh dcommit ke satu cawangan/tag/trunk pada satu masa. penggunaan
# dcommit/rebase/show-ignore hendaklah sama seperti di atas.
Awal pergi svn mengklon boleh memakan masa yang agak lama (terutamanya untuk Subversion yang besar
repositori). Jika berbilang orang (atau satu orang dengan berbilang mesin) ingin menggunakan pergi
svn untuk berinteraksi dengan repositori Subversion yang sama, anda boleh melakukan permulaan pergi svn mengklon
ke repositori pada pelayan dan minta setiap orang mengklonkan repositori itu dengan pergi mengklon:
# Lakukan import awal pada pelayan
pelayan ssh "cd /pub && git svn clone http://svn.example.com/project [pilihan...]"
# Klon secara tempatan - pastikan rujukan/jarak jauh/ruang sepadan dengan pelayan
projek mkdir
projek cd
git init
git remote tambah pelayan asal:/pub/project
git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
ambil git
# Cegah pengambilan/tarik dari pelayan Git jauh pada masa hadapan,
# kami hanya mahu menggunakan git svn untuk kemas kini masa hadapan
git config --remove-section remote.origin
# Buat cawangan tempatan daripada salah satu cawangan yang baru diambil
git checkout -b induk FETCH_HEAD
# Mulakan 'git svn' secara setempat (pastikan anda menggunakan URL yang sama dan
# --stdlayout/-T/-b/-t/--pilihan awalan seperti yang digunakan pada pelayan)
git svn init http://svn.example.com/project [pilihan...]
# Tarik perubahan terkini daripada Subversion
git svn rebase
REBASE VS. TARIK/GABUK
Lebih suka menggunakan pergi svn melunaskan semula or pergi melunaskan semula, Dan bukannya pergi tarik or pergi bergabung kepada
menyegerakkan komit tidak bersepadu dengan a pergi svn cawangan. Melakukannya akan mengekalkan sejarah
unintegrated melakukan linear berkenaan dengan repositori SVN huluan dan membenarkan penggunaan
daripada yang diutamakan pergi svn dcommit subperintah untuk menolak komit tidak bersepadu kembali ke SVN.
Pada asalnya, pergi svn mengesyorkan bahawa pemaju menarik atau bergabung daripada pergi svn cawangan.
Ini kerana pengarang lebih suka git svn set-tree B untuk melakukan satu kepala daripada
notasi git svn set-tree A..B untuk melakukan berbilang komit. Penggunaan pergi tarik or pergi
bergabung dengan git svn set-tree A..B akan menyebabkan sejarah tidak linear diratakan apabila
melakukan ke dalam SVN dan ini boleh membawa kepada penggabungan komit tanpa diduga membalikkan sebelumnya
melakukan dalam SVN.
MERGE PENJEJAKAN
Manakala pergi svn boleh menjejaki sejarah salinan (termasuk cawangan dan tag) untuk repositori
menggunakan susun atur standard, ia belum boleh mewakili sejarah gabungan yang berlaku di dalam git
kembali ke hulu ke pengguna SVN. Oleh itu adalah dinasihatkan bahawa pengguna menyimpan sejarah sebagai linear seperti
mungkin di dalam Git untuk memudahkan keserasian dengan SVN (lihat bahagian CAVEATS di bawah).
PENGENDALIAN OF SVN CAWANGAN
If pergi svn dikonfigurasikan untuk mengambil cawangan (dan --follow-branches berkuat kuasa), ia
kadangkala mencipta berbilang cawangan Git untuk satu cawangan SVN, di mana cawangan tambahan
mempunyai nama-nama borang nama cawangan@nnn (dengan nnn nombor semakan SVN). Tambahan ini
cawangan diwujudkan jika pergi svn tidak dapat mencari komit ibu bapa untuk komit pertama dalam SVN
cawangan, untuk menghubungkan cawangan dengan sejarah cawangan lain.
Biasanya, komit pertama dalam cawangan SVN terdiri daripada operasi salinan. pergi svn akan
baca komit ini untuk mendapatkan semakan SVN yang mana cawangan itu dicipta. Ia kemudian akan cuba untuk
cari komit Git yang sepadan dengan semakan SVN ini, dan gunakan itu sebagai induk
cawangan. Walau bagaimanapun, ada kemungkinan tiada komitmen Git yang sesuai untuk digunakan
ibu bapa. Ini akan berlaku, antara sebab lain, jika cawangan SVN adalah salinan semakan
yang tidak diambil oleh pergi svn (cth kerana ia adalah semakan lama yang telah dilangkau dengan
--ulang kaji), atau jika dalam SVN direktori telah disalin yang tidak dijejaki oleh pergi svn (seperti a
cawangan yang tidak dijejaki sama sekali, atau subdirektori cawangan yang dijejaki). Dalam kes ini,
pergi svn masih akan membuat cawangan Git, tetapi bukannya menggunakan komit Git sedia ada sebagai
ibu bapa cawangan, ia akan membaca sejarah SVN bagi direktori cawangan telah disalin
daripada dan buat komitmen Git yang sesuai. Ini ditunjukkan oleh mesej "Memulakan
ibu bapa: ".
Selain itu, ia akan mencipta cawangan khas bernama @, Di mana
ialah nombor semakan SVN yang mana cawangan itu disalin. Cawangan ini akan
tunjuk kepada komit induk yang baru dibuat bagi cawangan. Jika dalam SVN cawangan telah dipadamkan
dan kemudian dicipta semula daripada versi yang berbeza, akan terdapat berbilang cawangan sedemikian dengan a
@.
Ambil perhatian bahawa ini mungkin bermakna berbilang komit Git dicipta untuk semakan SVN tunggal.
Contoh: dalam repositori SVN dengan susun atur batang/tag/cawangan standard, direktori
trunk/sub dicipta dalam r.100. Dalam r.200, trunk/sub dicabangkan dengan menyalinnya ke branches/.
pergi svn mengklon -s kemudian akan membuat cawangan sub. Ia juga akan mencipta komitmen Git baharu untuk
r.100 hingga r.199 dan gunakan ini sebagai sejarah cawangan sub. Oleh itu akan ada dua Git
melakukan untuk setiap semakan dari r.100 hingga r.199 (satu mengandungi batang/, satu mengandungi
batang/sub/). Akhirnya, ia akan mewujudkan cawangan sub@200 menunjuk kepada komitmen ibu bapa baharu
cawangan sub (iaitu komit untuk r.200 dan trunk/sub/).
CATATAN
Demi kesederhanaan dan saling beroperasi dengan Subversion, adalah disyorkan bahawa semua
pergi svn pengguna mengklon, mengambil dan dcommit terus daripada pelayan SVN, dan elakkan semua pergi
mengklon/tarik/bergabung/menolak operasi antara repositori dan cawangan Git. Yang disyorkan
kaedah pertukaran kod antara cawangan Git dan pengguna ialah pergi tampalan format and pergi am,
atau hanya 'dcommit' ke repositori SVN.
Berlari pergi bergabung or pergi tarik TIDAK disyorkan pada cawangan yang anda rancang dcommit dari
kerana pengguna Subversion tidak dapat melihat sebarang gabungan yang telah anda buat. Tambahan pula, jika anda menggabungkan atau
tarik dari cawangan Git yang merupakan cermin cawangan SVN, dcommit boleh melakukan kesalahan
cawangan.
Jika anda bergabung, perhatikan peraturan berikut: pergi svn dcommit akan cuba untuk melakukan di atas
komit SVN dinamakan dalam
git log --grep=^git-svn-id: --first-parent -1
anda kemestian oleh itu pastikan bahawa komit terbaharu cawangan yang anda ingin dkomitkan
adalah pertama induk kepada gabungan itu. Kekacauan akan berlaku sebaliknya, terutamanya jika yang pertama
ibu bapa ialah komitmen yang lebih lama pada cawangan SVN yang sama.
pergi mengklon tidak mengklon cawangan di bawah rujukan/jarak jauh/ hierarki atau mana-mana pergi svn
metadata, atau konfigurasi. Jadi repositori dibuat dan diuruskan dengan menggunakan pergi svn harus digunakan
rsync untuk pengklonan, jika pengklonan hendak dilakukan sama sekali.
Sejak dcommit menggunakan rebase secara dalaman, mana-mana Git cawangan anda pergi menolak kepada sebelum ini dcommit on
akan memerlukan paksaan menulis ganti rujukan sedia ada pada repositori jauh. Ini adalah
umumnya dianggap amalan buruk, lihat tolak git(1) dokumentasi untuk butiran.
Jangan gunakan pilihan --amenda bagi git-commit(1) pada perubahan yang telah anda lakukan. Ia
dianggap sebagai amalan buruk untuk --amend commit yang telah anda tolak ke repositori jauh
untuk pengguna lain, dan dcommit dengan SVN adalah serupa dengan itu.
Apabila mengklon repositori SVN, jika tiada pilihan untuk menerangkan repositori
susun atur digunakan (--trunk, --tags, --branches, --stdlayout), pergi svn mengklon akan mencipta Git
repositori dengan sejarah linear sepenuhnya, di mana cawangan dan tag muncul sebagai berasingan
direktori dalam salinan kerja. Walaupun ini adalah cara paling mudah untuk mendapatkan salinan yang lengkap
repositori, untuk projek dengan banyak cawangan ia akan membawa kepada salinan kerja berkali-kali
lebih besar daripada batangnya sahaja. Oleh itu untuk projek yang menggunakan struktur direktori standard
(batang/cabang/tag), adalah disyorkan untuk mengklon dengan pilihan --stdlayout. Jika projek
menggunakan struktur bukan standard, dan/atau jika cawangan dan teg tidak diperlukan, ia adalah yang paling mudah
untuk hanya mengklon satu direktori (biasanya trunk), tanpa memberikan sebarang susun atur repositori
pilihan. Jika sejarah penuh dengan cawangan dan tag diperlukan, pilihan --batang /
--cawangan / --tag mesti digunakan.
Apabila menggunakan berbilang --cawangan atau --tag, pergi svn tidak mengendalikan nama secara automatik
perlanggaran (contohnya, jika dua cabang dari laluan berbeza mempunyai nama yang sama, atau jika a
cawangan dan tag mempunyai nama yang sama). Dalam kes ini, gunakan INIT untuk menyediakan Git anda
repositori kemudian, sebelum yang pertama anda ambil, edit fail $GIT_DIR/config supaya fail
cawangan dan tag dikaitkan dengan ruang nama yang berbeza. Sebagai contoh:
cawangan = stabil/*:refs/remotes/svn/stable/*
cawangan = nyahpepijat/*:refs/remotes/svn/debug/*
Gunakan git-svn dalam talian menggunakan perkhidmatan onworks.net