Saya punya proyek yang dikendalikan versi menggunakan git.
Apa yang ingin saya lakukan adalah menyiapkan repo pada paket hosting bersama GoDaddy (ssh-enabled) saya sehingga saya bisa menggunakan dengan push daripada menyeret dan menjatuhkan di FTP.
Setiap tips akan sangat dihargai. Best akan menjadi akun dari seseorang yang sudah melakukannya, tetapi saya tidak bisa menemukan sendiri secara online.
Jawaban:
Saya mengalami masalah yang sama dengan situs yang saya host-kan pada paket hosting berbagi HostNine. Mereka juga memberi Anda
ssh
akses, tetapi sayangnya mereka belumgit
diinstal dan bahkan tidak memberi Anda akses untuk menjalankangcc
, membuatnya agak sulit untuk mengunduh dan menginstal git untuk pengguna Anda.Satu-satunya cara saya bisa memikirkan untuk mengatasi pembatasan ini adalah dengan menyalin binari git dari komputer lain yang memilikinya. Mungkin solusi yang sama akan bekerja untuk Anda dan host bersama GoDaddy Anda. Inilah yang saya lakukan:
Pertama cari tahu apa arsitektur server Anda. Dalam kasus saya itu 32-bit (i386). Berikut adalah beberapa cara untuk mengetahuinya:
Selanjutnya Anda perlu menemukan komputer lain yang menjalankan Linux dengan arsitektur yang sama dan dengan git diinstal di dalamnya. Mereka bahkan tidak harus menjalankan distribusi atau versi Linux yang sama, asalkan arsitekturnya sama dan Anda dapat menemukan file biner dan pustaka yang Anda butuhkan.
Untuk menemukan lokasi biner git utama:
Beberapa binari penting lainnya (seperti
git-receive-pack
) juga berada di direktori yang sama, jadi saya sarankan hanya menyalin semua/usr/local/bin/git*
untuk memastikan Anda mendapatkan semua yang Anda butuhkan.File-file penting lainnya adalah git yang bergantung pada direktori 'libexec' di suatu tempat di sistem sumber. Jika Anda tidak menyalin ini, Anda mungkin mendapatkan pesan kesalahan yang mengejutkan ketika Anda mencoba melakukan
git push
, seperti yang saya lakukan:Untuk menemukan direktori yang berisi pustaka inti git di target_host, Anda dapat menggunakan ini:
Saya akan merekomendasikan menyalin file-file itu terlebih dahulu dan kemudian mencoba menjalankan git untuk melihat apakah ia mengeluh tentang ada pustaka bersama yang hilang. Jika tidak, maka Anda (mungkin) baik untuk pergi. Jika ya, maka teruslah membaca. (Tidak digunakan menyalin di perpustakaan bersama jika sudah ada pada host target dan merupakan versi yang benar.)
Anda dapat menyalin file dengan
scp
,rsync
,ftp
, atau apapun yang Anda merasa nyaman dengan. Saya menggunakanscp
, sesuatu seperti ini:Kemudian ssh ke target_host. Anda perlu menambahkan beberapa baris seperti ini ke
~/.bashrc
:Jika Anda lupa langkah ini, Anda mungkin terkejut melihat kesalahan ini ketika Anda melakukan
git push
:Ini didokumentasikan pada FAQ Git di git.or.cz:
GIT_EXEC_PATH
didokumentasikan padaman git
:Sumber baru Anda
~/.bashrc
. Sekarang coba jalankangit
.Inilah yang memberi saya pertama kali:
Saya dapat mengetahui lokasi pustaka bersama untuk disalin dengan menjalankan ini pada mesin sumber:
Dalam kasus saya, saya hanya perlu menyalin
/lib/libcrypto.so.4
ke~/lib
sayatarget_host
dan semuanya baik-baik saja.Sekarang Anda harus sudah bekerja
git
pada server hosting bersama Anda dan Anda harus bisa mendorongnya!Sekarang Anda perlu membuat repositori git baru dan pohon kerja di server Anda atau menyalin pohon repositori / kerja Anda yang sudah ada.
By the way, saya tidak berpikir repositori telanjang adalah apa yang Anda inginkan di server dalam hal ini karena Anda mengatakan Anda ingin menyebarkan file konten aktual (bukan hanya
config HEAD objects/ refs/
file yang akan dimasukkan dalam repositori telanjang) kapan saja kamu melakukangit push
.toolmantim.com menjelaskan perbedaan antara repositori git biasa dan repositori kosong:
Saya akan berasumsi untuk saat ini bahwa Anda telah membuat direktori di
target_host
mana Anda ingin menyebarkan situs web Anda (atau apa pun yang Anda gunakan). Mari kita sebut direktori itu~/www/my_site
. Anda bahkan mungkin ftp'd atas semua file Anda~/www/my_site already
. (Apakah Anda memiliki atau tidak adalah tidak penting.) Saya juga akan berasumsi untuk saat ini bahwa Anda belum menyalin subdirektori .git ke~/www/my_site
(seharusnya berfungsi dengan baik jika Anda memilikinya).Karena belum ada repositori git yang diinisialisasi pada target_host, langkah pertama Anda adalah membuatnya:
Kemudian dari host mana pun yang memiliki repositori dengan perubahan terbaru yang ingin Anda gunakan (kotak pengembangan Anda, saya kira), Anda hanya perlu melakukan sesuatu seperti ini untuk menggunakan:
Anda mungkin melihat peringatan seperti ini jika repositori Anda pada tanggal
target_host
belum diperbarui:(Dalam
git
penggunaan normal, Anda tidak pernah melihat pesan itu, saya pikir, karena Anda biasanya mendorong untuk membuka repositori. Tetapi karena repositori jarak jauh kami dalam kasus ini adalah repo normal dengan pohon kerja dan indeks,git
dapat dimengerti khawatir bahwa itu mungkin mengacaukan sesuatu.)Saya pikir aman bagi kami untuk mengaturnya agar 'diabaikan' di server Anda, karena Anda tidak mungkin membuat komitmen langsung ke repositori di sana. (Semua komit mungkin seharusnya berasal dari repositori pengembangan Anda dan kemudian didorong ke server.)
Jadi lanjutkan dan atur ini sehingga Anda tidak akan melihat peringatan setiap kali Anda mendorong:
Itu
push
sendiri hanya memperbarui indeks, BUKAN file di pohon pekerjaan itu sendiri. Memperbarui file-file itu hanya semacam inti dari apa yang kami coba lakukan, jadi tugas kami belum selesai sampai kami memintagit
untuk menuliskan isi indeks ke pohon pekerjaan itu sendiri, seperti:(Catatan: Setiap perubahan yang mungkin Anda miliki di pohon pekerjaan Anda di server akan ditimpa oleh apa yang ada di repositori.)
Saya juga mengikuti saran mattikus dan membuat remote untuk server saya:
Jadi sekarang yang harus saya lakukan untuk menggunakan adalah:
Saya bahkan melangkah lebih jauh dengan melempar perintah-perintah ini dalam sebuah skrip yang saya beri nama
script/deploy
sehingga setiap kali saya ingin menggunakan saya hanya memiliki satu perintah untuk dijalankan.Tolong beri tahu saya jika Anda menemukan kesalahan dalam instruksi ini atau jika Anda tahu solusi yang lebih baik.
sumber
Saya sama-sama seorang SF dan GoDaddy n00b, jadi bersabarlah, tapi bagaimanapun, saya sangat senang melihat ini dibahas di sini.
Hanya $ 0,02 saya, saya mencoba membangun git (secara dinamis) pada kotak linux saya, menyalurkannya ke akun gaduh saya, dan bahkan jika hanya mencoba untuk mendorong ke mesin gaduh yang pasif, ia gagal karena hilang openssl. Mungkin jika saya mencoba membangun git secara statis dengan openssl, tapi rasanya juga ide yang buruk.
Di luar topik, tetapi apakah ini semacam kurangnya dukungan yang harus saya harapkan dari godaddy, haruskah saya menyesal tidak memilih dreamhosts saja?
Salam CJ
PS. Bukan jawaban, tetapi saran bahwa sekali git-accept bekerja pada godaddy (bukan?), Maka repositori dengan worktree terpisah adalah cara yang bagus untuk digunakan untuk web: http://toroid.org/ams/git- situs web howto
sumber
Cara termudah untuk melakukan ini adalah dengan menjalankan sesuatu seperti ini di server jauh Anda:
Kemudian pada checkout devel Anda:
Tidak ada server atau apa pun yang diperlukan, dan Anda harus dapat mengambil / menarik dari mesin itu selama Anda memiliki akses ssh.
Jika Anda telah mengatur .ssh / config Anda, itu harus mengambil keuntungan dari itu dan menggunakan kunci pribadi apa pun yang mungkin telah Anda atur.
Jika Anda berencana untuk sering melakukan pembaruan, Anda dapat menambahkan repo jarak jauh ke checkout devel Anda:
Kemudian sejak saat itu Anda dapat:
Untuk info lebih lanjut, lihat dokumen online di
git push
atau jalankangit push --help
untuk meluncurkan halaman manual di lokal Anda.sumber