Alur kerja GIT pengembang tunggal (bergerak dari FTP langsung)

11

Saya mencoba memutuskan apakah pindah ke VCS masuk akal bagi saya. Saya seorang pengembang web tunggal di sebuah organisasi kecil (5 orang). Saya memikirkan VCS (Git) karena alasan ini: kontrol versi, cadangan di luar kantor, repositori kode terpusat (dapat diakses dari rumah).

Saat ini saya bekerja pada server hidup secara umum. I FTP masuk, lakukan pengeditan dan simpan, kemudian unggah kembali dan segarkan. Pengeditan biasanya untuk file tema / plugin untuk CMSes (mis. Concrete5 atau Wordpress). Ini berfungsi dengan baik tetapi tidak menyediakan cadangan dan tidak ada kontrol versi.

Saya bertanya-tanya bagaimana cara terbaik untuk mengintegrasikan VCS ke dalam prosedur ini. Saya akan membayangkan menyiapkan server Git di server web perusahaan, tetapi saya tidak jelas bagaimana cara mendorong perubahan ke akun klien (biasanya VPS di server yang sama) - saat ini saya cukup masuk ke SFTP dengan rinciannya dan membuat perubahan secara langsung.

Saya juga tidak yakin apa yang akan mewakili repositori - apakah setiap situs web klien akan mendapatkan repositori mereka sendiri?

Wawasan atau pengalaman apa pun akan sangat membantu. Saya rasa saya tidak perlu kekuatan penuh Git dengan cara apa pun, tetapi kontrol versi dasar dan akses cloud de facto akan sangat berguna.

EDIT: Saya mempersempitnya ke dua opsi yang tampaknya paling masuk akal. Yang pertama didasarkan pada jawaban ZweiBlumen , di mana pengeditan dilakukan pada server langsung dan dilakukan dari sana ke server Git (eksternal). Ini memiliki keuntungan bahwa alur kerja saya tidak akan banyak berubah (ada langkah ekstra untuk membuat komitmen, tetapi sebaliknya identik).

Opsi kedua adalah bekerja secara lokal menggunakan XAMPP, lalu melakukan perubahan dari mesin lokal. Hanya ketika situs ditayangkan saya mengunggah artikel jadi ke server web dari mesin lokal (segera setelah komit terakhir ke Git). Secara teori ini tampaknya oke, tetapi jika situs sesudahnya memerlukan perbaikan dan saya membuatnya di server langsung (seperti biasanya) maka saya harus menyalin secara manual atas file yang diubah di repo lokal saya, kemudian melakukan perubahan itu ke Git server. Ini tampaknya terlalu rumit dan mungkin terlalu jauh dari alur kerja saya saat ini.

Saya pikir dengan keseimbangan saya akan memberikan opsi # 1, dan lihat bagaimana saya maju.

melat0nin
sumber
1
Yang perlu diingat tentang git (atau VCS terdistribusi lainnya) adalah bahwa semua repositori, setidaknya secara teknis, sebaya: repositori lokal Anda sama "nyata" dengan yang ada di server langsung, atau repositori cadangan. Ini adalah kebijakan alur kerja Anda yang memberi mereka struktur - jadi jika Anda benar - benar ingin terus melakukan pekerjaan utama pada server langsung, Anda dapat ...
comingstorm
Terima kasih, itu baik untuk diketahui. Fleksibilitas yang melekat dari Git membuatnya sulit untuk menentukan titik awal 'praktik terbaik' - itu adalah kekuatan dari POV pengguna yang berpengalaman tetapi bisa dibilang kelemahan dari noob's!
melat0nin

Jawaban:

3

Apa yang saya lakukan (dengan Subversion, tetapi akan bekerja dengan Git juga) adalah mengkomit semuanya ke satu repositori Subversion, tetapi jelas dibagi menjadi proyek, cabang, tag yang diperlukan. Saya kemudian checkout repositori ini ke server langsung. Jadi ketika saya membuat perubahan pada mesin dev saya dan melakukan ini ke repositori, sering kali hanya merupakan kasus memperbarui salinan diperiksa pada server langsung untuk membuat perubahan langsung. Bonus tambahan adalah bahwa jika saya perlu melakukan perbaikan cepat pada server langsung saya komit ini ke repositori dari server dan memperbarui copy pekerjaan di mesin dev saya.

Saya yakin ada cara lain untuk mengelola ini, tetapi saya menemukan ini cukup mudah dan saya berada dalam situasi yang sama persis seperti Anda: pengembang tunggal dalam organisasi kecil (4 orang).

ZweiBlumen
sumber
1
Terima kasih untuk balasan Anda! Apakah itu berarti Anda menarik snapshot ke mesin lokal Anda, membuat dan melakukan perubahan, lalu melakukan permintaan tarik dari server langsung (dengan SSHing in)? Bagaimana jika perubahannya sangat kecil? Apakah Anda menjalankan server web lokal untuk pengembangan? (Saya tidak bisa melalui proses itu untuk perubahan CSS sederhana .. Saya akan gila!)
melat0nin
1
Untuk perubahan kecil CSS saya akan membuat perubahan langsung di server dan kemudian melakukan perubahan itu ke repositori dari server. Ketika saya harus melakukan pekerjaan yang lebih serius di situs saya kemudian akan memperbarui situs di mesin dev saya dengan versi terbaru dari situs dari repositori. Saya kira itu tidak masalah di mana Anda melakukan perubahan (server atau mesin dev) selama Anda komit ke repositori.
ZweiBlumen
Jadi alat apa yang Anda gunakan untuk ini? FTP membuat file berubah secara langsung di server, lalu sesi SSH terbuka di latar belakang untuk melakukan commit ke server Git sekarang dan lagi?
melat0nin
1
Ya, pada dasarnya itu. Sebenarnya saya menggunakan Subversion. Kami memiliki situs di Windows dan juga server Linux. Pada Windows I remote desktop ke mereka, buat perubahan CSS dan komit menggunakan TortoiseSVN. Di Linux saya menggunakan sesi SSH dan vim untuk membuat perubahan (tapi saya juga bisa FTP perubahan Anda saya kira).
ZweiBlumen
Saya telah pergi dengan saran Anda untuk mengedit di server kemudian melakukan dari sana melalui SSH, yang telah saya lakukan selama beberapa hari sekarang. Tampaknya bekerja dengan sangat baik, terima kasih!
melat0nin
2

Agak mudah untuk membuat post-updatepengait , yang secara otomatis memperbarui (mengekspor dengan git archivelebih disukai karena alasan keamanan) direktori data server web saat Anda mendorong ke cabang tertentu.

Jadi punya repositori git yang diatur di suatu tempat (untuk alasan keamanan saya akan meletakkannya di server yang berbeda dari web) dengan kait seperti itu. Anda tentu saja akan memerlukan server uji untuk menguji perubahan yang lebih besar, yang mungkin pada mesin lokal Anda atau diperbarui dengan mendorong ke cabang yang berbeda. Dalam kedua kasus tersebut, Anda dapat mem-bypassnya untuk pengejaan sepele dan perbaikan CSS dengan hanya melakukan commit dan push.

Jan Hudec
sumber
1

Saya akan mengikuti langkah-langkah ini:

  1. Atur server jarak jauh dengan pasangan kunci publik / pribadi yang tepat untuk push / pull jarak jauh
  2. Siapkan dua cabang pengujian dan rilis
  3. Kembangkan secara lokal dengan lingkungan pengujian di cabang pengujian
  4. Ketika Anda senang bergabung dengan cabang rilis dan dorong ke server jauh
  5. Kaitkan pada server jarak jauh untuk memperbarui ke versi rilis terbaru

Siapkan satu repo per situs web, agar tidak saling mengacaukan. Cabang terpisah memungkinkan Anda untuk menghindari penguncian versi "baik" saat ini ke apa yang sedang Anda kerjakan, yang mungkin atau mungkin tidak berfungsi.

Spencer Rathbun
sumber
Jadi saya mengerti dengan benar - ada dua server (1) untuk Git, (2) server web langsung, dan satu mesin pengembangan lokal. Dev dilakukan secara lokal kemudian didorong ke server Git yang memiliki kait untuk memperbarui server langsung?
melat0nin
@ melat0nin Itu salah satu cara untuk melakukannya. Anda dapat memiliki server langsung menarik dari server git sebagai tugas cron juga. Atau, Anda dapat memiliki 2 mesin. Mesin pengembang lokal, dan server web produksi langsung. Dengan begitu, mendorong repo dari mesin dev ke pembaruan mesin produksi ke cabang rilis terbaru setiap kali Anda mendorong.
Spencer Rathbun