Dengan SVN, saya memiliki satu repositori besar yang saya simpan di server, dan check-out di beberapa mesin. Ini adalah sistem cadangan yang cukup bagus, dan memungkinkan saya bekerja dengan mudah di salah satu mesin. Saya dapat melakukan checkout proyek tertentu, melakukan dan memperbarui proyek 'master', atau saya dapat menyelesaikan semuanya.
Sekarang, saya memiliki banyak repositori git, untuk berbagai proyek, beberapa di antaranya ada di github. Saya juga memiliki repositori SVN yang saya sebutkan, diimpor melalui perintah git-svn ..
Pada dasarnya, saya suka memiliki semua kode saya (bukan hanya proyek, tetapi cuplikan dan skrip acak, beberapa hal seperti CV saya, artikel yang saya tulis, situs web yang saya buat, dan sebagainya) dalam satu repositori besar yang dapat dengan mudah saya klon ke remote mesin, atau memory-sticks / harddisk sebagai cadangan.
Masalahnya adalah, karena ini adalah repositori pribadi, dan git tidak mengizinkan check out dari folder tertentu (yang dapat saya dorong ke github sebagai proyek terpisah, tetapi perubahannya muncul di master-repo, dan sub- repo)
Saya dapat menggunakan sistem submodul git, tetapi tidak berfungsi seperti yang saya inginkan juga (submodul adalah penunjuk ke repositori lain, dan tidak benar-benar berisi kode sebenarnya, jadi tidak berguna untuk cadangan)
Saat ini saya memiliki folder git-repos (misalnya, ~ / code_projects / proj1 / .git / ~ / code_projects / proj2 / .git /), dan setelah melakukan perubahan pada proj1 saya lakukan git push github
, kemudian saya menyalin file ke ~ / Dokumen / kode / python / proyek / proj1 / dan lakukan satu komit (alih-alih banyak yang ada di repo individu). Lalu lakukan git push backupdrive1
, git push mymemorystick
dll
Jadi, pertanyaannya: Bagaimana kode dan proyek pribadi Anda dengan repositori git, dan menjaganya tetap sinkron dan dicadangkan?
Saya ingin menambahkan jawaban Damien di mana dia merekomendasikan:
Anda dapat mengatur remote khusus untuk mendorong semua remote nyata individu dengan 1 perintah; Saya menemukannya di http://marc.info/?l=git&m=116231242118202&w=2 :
Anda juga dapat menghemat diri dengan mengetik URL dua kali dengan menggunakan konstruksi:
sumber
Saya juga ingin tahu tentang cara yang disarankan untuk menangani ini dan akan menjelaskan pengaturan saat ini yang saya gunakan (dengan SVN). Saya pada dasarnya telah membuat repositori yang berisi hierarki sistem file mini termasuk bin dan direktori lib-nya sendiri. Ada skrip di root pohon ini yang akan mengatur lingkungan Anda untuk menambahkan bin, lib, dll ... direktori lain ini ke variabel lingkungan yang sesuai. Jadi direktori root pada dasarnya terlihat seperti:
Sekarang di dalam / bin dan / lib ada beberapa proyek dan perpustakaannya yang sesuai. Saya tahu ini bukan proyek standar, tetapi sangat mudah bagi orang lain di grup saya untuk memeriksa repo, menjalankan skrip 'setup_env.bash' dan memiliki versi terbaru dari semua proyek secara lokal di dalamnya. Periksa. Mereka tidak perlu khawatir tentang menginstal / memperbarui / usr / bin atau / usr / lib dan membuatnya mudah untuk memiliki banyak pembayaran dan lingkungan yang sangat terlokalisasi per checkout. Seseorang juga dapat meng-rm seluruh repositori dan tidak khawatir tentang menghapus program apa pun.
Ini berfungsi dengan baik untuk kami, dan saya tidak yakin apakah kami akan mengubahnya. Masalahnya adalah ada banyak proyek dalam satu repositori besar ini. Apakah ada cara standar git / Hg / bzr untuk membuat lingkungan seperti ini dan memecah proyek ke dalam repositori mereka sendiri?
sumber
, Saya belum mencoba menumpuk repositori git karena saya belum mengalami situasi di mana saya perlu melakukannya. Seperti yang saya baca di #git channel, git tampaknya menjadi bingung dengan menyusun repositori, misalnya Anda mencoba git-init di dalam repositori git. Satu-satunya cara untuk mengelola struktur git bersarang adalah dengan menggunakan
git-submodule
ataurepo
utilitas Android .Adapun tanggung jawab cadangan yang Anda jelaskan, saya katakan mendelegasikannya ... Bagi saya, saya biasanya meletakkan repositori "asal" untuk setiap proyek di drive jaringan di tempat kerja yang didukung secara teratur oleh teknisi IT dengan strategi cadangan mereka pilihan. Ini sederhana dan saya tidak perlu khawatir tentang itu. ;)
sumber
Bagaimana dengan menggunakan mr untuk mengelola beberapa repo Git Anda sekaligus:
sumber
Ada metode lain untuk memiliki repo git bersarang, tetapi itu tidak menyelesaikan masalah yang Anda cari. Namun, untuk orang lain yang mencari solusi saya adalah:
Di tingkat atas git repo cukup sembunyikan folder di .gitignore yang berisi repo git bersarang. Ini membuatnya mudah untuk memiliki dua repo git yang terpisah (tapi bersarang!).
sumber