Aman memiliki /.svn/ folder di situs langsung? (Bagaimana menghapusnya tetapi mempertahankan kemampuan pembaruan svn?)

10

Saya sedang melakukan pembaruan svn untuk memperbarui kode untuk situs web php saya, tetapi ia meninggalkan .svn/semua folder.

Saya pikir berbahaya untuk membiarkan file-file itu dapat dibaca secara publik, tetapi sangat mudah untuk memperbarui sistem.

Apakah ada cara yang digunakan svn updateuntuk memperbarui sistem, tetapi tidak untuk mengekspor .svn/folder?

silikonpi
sumber

Jawaban:

21

Jika Anda menggunakan apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

Itu akan memblokir orang-orang dari mengakses .svndirektori dari jarak jauh (menggunakan browser) tetapi Anda dapat tetap melakukannya (dan kemampuan svn) pada proyek.

BTW Anda dapat menggantikan \.svnuntuk \.gitatau \.cvsjika Anda menggunakan sesuatu yang berbeda dari subversi.

coredump
sumber
dan ini akan memblokir semua direktori .svn di situs web? saya punya banyak subdirektori
siliconpi
Saat ini httpd.conf saya memiliki <Directory /> Options FollowSymLinks AllowOverride All </Directory> dapatkah saya menambahkan apa yang Anda tulis tepat di bawah ini sebagai hal yang terpisah atau apakah kedua entri perlu digabung?
siliconpi
Ini akan cocok dengan direktori mana saja yang disebut .svnya.
coredump
Anda dapat menambahkannya secara terpisah.
coredump
3

Anda ingin mengekspor kode Anda dari SVN ke situs langsung ...

Jangan gunakan svn updateuntuk itu. pembaruan dimaksudkan untuk digunakan dengan memperbarui salinan yang berfungsi, bukan mengekspor kode. Gunakan svn exportsebagai gantinya karena mengekspor pohon direktori bersih dari repositori yang ditentukan.

The --forcebendera akan memungkinkan ekspor untuk menimpa file yang sudah ada.

Entri manual Ekspor SVN

gsreynolds
sumber
Saya dapat bersimpati jika OP tidak ingin menggunakan export, karena melibatkan selalu mengambil salinan baru dari repositori, yang merepotkan jika repo besar pada koneksi kecil (katakanlah server web server yang di-host, tetapi repo SVN Anda ada di kantor lokal Anda dan dibagikan oleh tautan 1Mb). updateberarti Anda tidak perlu mendapatkan semuanya setiap saat.
Mark Henderson
Poin yang adil. Mungkin mengekspor ke salinan lokal situs tersebut, lalu hanya mengubah perubahan ke server web jarak jauh akan bekerja dalam situasi itu? Saya tidak pernah memiliki masalah itu jadi saya belum mempertimbangkannya.
gsreynolds
2

Saya tidak menempatkan mereka di situs produksi / live. Karena saya tidak ingin saya dan / atau pengembang lain lupa ide buruk untuk mengedit kode langsung. Skrip instal saya memfilter file .svn saya.

ekerner
sumber
@erner - lalu bagaimana Anda memperbaruinya?
siliconpi
1
Mengapa tidak menggunakan saja svn exportdan tidak repot-repot memfilternya?
pjmorse
Saya memiliki skrip instal yang saya gunakan untuk situs saya, dan sedikit mengubah sesuai dengan masing-masing. Biasanya juga melakukan hal-hal seperti membangun database, tabel db, dan pengguna db, mengatur pengguna atau admin standar, dll. Jadi untuk melakukan ekspor ke prod, pengguna prod (sebagai manusia atau script) memeriksa svn yang berfungsi salin ke suatu tempat ~ /, dan kemudian jalankan skrip instal yang merupakan anggota dari copy pekerjaan tersebut, kemudian secara opsional menghapus copy pekerjaan.
ekerner
1

Anda harus melihat ke dalam sistem penyebaran yang tepat, seperti Capistrano . Ini berarti server produksi Anda tidak perlu subversi, dan Anda dapat menggunakan ke beberapa server dan menambahkan logika khusus ke penerapan. Ini juga membuatnya relatif mudah untuk memutar kembali penyebaran.

dhasenan
sumber