Bagaimana saya bisa mengatur repositori Git pribadi?

20

Saya sedang dalam proses menyiapkan akun GitHub dengan rencana membuat sepasang perpustakaan yang saya kembangkan sebagai bagian dari beberapa proyek iOS terbaru yang tersedia secara bebas untuk pengembang aplikasi iOS lainnya untuk digunakan.

Saat ini saya tidak memiliki cadangan di luar situs untuk sebagian besar kode saya, jadi sebagai bagian dari ini, saya awalnya berpikir saya akan mengunggah semua proyek pribadi saya, atau setidaknya semua proyek iOS saya, ke repositori pribadi yang di-host oleh GitHub . Namun, saya memiliki banyak proyek yang sedang berlangsung, banyak di antaranya bernilai rendah (yaitu, diadaptasi dari buku dan ditulis untuk pengalaman belajar). GitHub tidak hanya diisi oleh repositori pribadi, tetapi juga tidak memiliki cara untuk mengatur repositori secara hierarkis.

Apakah ada sesuatu yang saya lewatkan yang akan memungkinkan saya untuk menggunakan repositori git dengan hierarki dan memeriksa potongan-potongan yang saya butuhkan / bekerja dengannya, seperti yang saya lakukan saat ini dengan SVN?

Apakah GitHub (atau pesaing, seperti BitBucket) memiliki beberapa fitur organisasi proyek yang saya lewatkan?

Kegagalan itu, apa "cara Git" yang diterima secara umum untuk menangani situasi ini (membuang proyek yang tidak dimaksudkan untuk rilis, menyimpannya secara offline, menggabungkannya entah bagaimana, dll, dll.)?

Sejauh yang saya tahu, pilihan saya adalah:

  1. Letakkan pustaka di GitHub, terus hosting SVN saya sendiri untuk semua proyek lainnya, gunakan solusi non-VCS untuk backup di luar situs (blech),
  2. Letakkan perpustakaan dan perangkat lunak yang saya rencanakan untuk rilis di GitHub (masing-masing sebagai publik dan pribadi), terus hosting SVN saya sendiri untuk proyek yang tidak terlalu saya pedulikan dan saya hanya akan meninjau kembali untuk menyegarkan ingatan saya tentang bagaimana menerapkan XYZ, memutuskan bahwa saya bersedia untuk menghapusnya jika rumah saya meledak (blech ganda),
  3. Letakkan semuanya di [GitHub dan / atau BitBucket], berurusan dengan memiliki beberapa repositori konyol dengan mencari apa yang saya butuhkan / mempertahankan beberapa set pointer offline ke akun [GitHub dan / atau BitBucket] saya (triple blech)
Arkaaito
sumber
2
Saya ingin tahu berapa banyak repositori yang sedang kita bicarakan di sini. Apa yang Anda maksud dengan "pointer"?
mhulse
karena ini adalah pertanyaan lama, bitbucket memungkinkan Anda membuat organisasi gratis, dan di dalamnya Anda dapat memiliki proyek, yang dapat memiliki repositori. Organisasi bebas hingga sejumlah pengguna. Anda dapat mengelola izin dengan org / project / repo.
xenoterracide
Perhatikan bahwa GitHub sekarang menawarkan repositori pribadi tanpa batas dengan paket berbayar mereka.
Jack

Jawaban:

11

bitbucket.org memungkinkan Anda membuat repo pribadi tanpa batas.

Git tidak membiarkan Anda memeriksa hanya beberapa potong kode. Jadi, Anda perlu membuat repo untuk setiap proyek, atau berurusan dengan kloning semua proyek. Pada kenyataannya saya tidak melihat masalah dengan menempatkan semua proyek kecil kami dalam satu repo. Anda mengkloningnya sekali dan selesai.

Dengan Git Anda tidak perlu "checkout" kode lagi kecuali Anda menerbangkan repo lokal Anda atau pindah ke komputer lain. Anda hanya akan menyinkronkan semua perubahan Anda.

Saya memiliki masalah simular dengan sejumlah besar repositori. Alasan saya tidak dapat menyimpan semuanya dalam satu repositori adalah karena saya perlu melakukan percabangan versi yang berbeda dari setiap repositori. Sangat sulit untuk dikelola.

Andrew T Finnell
sumber
Benar, benar ... Saya mungkin seharusnya tidak memanggil GitHub secara khusus, karena saya terbuka untuk menggunakan BitBucket untuk proyek pribadi. Sunting sedikit pertanyaan untuk membuatnya kurang khusus.
Arkaaito
5

Jawaban singkat ...

Saran saya: Mulai dengan akun publik di GitHub dan / atau Bitbucket (lainnya?). Lemparkan beberapa proyek publik dan mulai gunakan alat / antarmuka. Setelah Anda merasakan layanan, maka Anda harus memahami apa keterbatasan, kelebihan dan kekurangan dari masing-masing layanan. Dari sana, Anda harus dapat memilih jalur terbaik menuju pencerahan kontrol versi. :)


Jawaban panjang ...

Saat ini saya tidak memiliki cadangan di luar situs untuk sebagian besar kode saya, jadi sebagai bagian dari ini, saya awalnya berpikir saya akan mengunggah semua proyek pribadi saya, atau setidaknya semua proyek iOS saya, ke repositori pribadi yang di-hosting oleh GitHub . Namun, saya memiliki banyak proyek yang sedang berlangsung, banyak di antaranya bernilai rendah (yaitu, diadaptasi dari buku dan ditulis untuk pengalaman belajar).

Sudahkah Anda mempertimbangkan untuk menginstal klien Git Anda sendiri? Jika Anda sudah membayar untuk hosting web, maka mungkin masuk akal untuk menggunakan host itu untuk pengaturan Git Anda sendiri.

Misalnya, host saya adalah WebFaction (tidak ada afiliasi):

Menginstal Aplikasi Web Git

Menuju rute ini memungkinkan Anda menghemat $$$, terutama. jika Anda sudah membayar untuk hosting.

GitHub tidak hanya mengisi oleh repositori pribadi,

Hanya untuk mengklarifikasi untuk orang lain (sekali lagi, tidak ada afiliasi bisnis dengan GitHub atau BitBucket):

GitHub: Paket & Harga

  • $ 7 / bln. hingga 5 repositori pribadi , tidak terbatas segalanya.
  • $ 12 / bln. hingga 10 repositori pribadi , tidak terbatas segalanya.
  • $ 12 / bln. hingga 20 repositori pribadi , tidak terbatas segalanya.

Perhatikan bahwa harga "Paket Bisnis" berbeda.

Harga untuk hosting repositori Git dan Mercurial untuk Bitbucket oleh Atlassian

Seperti yang dinyatakan oleh Andrew dalam jawaban lain, Bitbucket mempromosikan repo pribadi tanpa batas.

  • 5 pengguna: Gratis
  • 10 pengguna: $ 10 / bln.
  • 25 pengguna: $ 25 / bln.
  • 50 pengguna: $ 50 / bln.
  • 100 pengguna: $ 100 / bln.
  • Tidak terbatas $ 200 / bln.

tampaknya tidak memiliki cara mengatur repositori secara hierarkis.

Tidak yakin persis apa yang Anda maksud dengan "hierarkis" (mungkin karena saya tidak terbiasa dengan SVN).

Saya tidak yakin apakah ini akan membantu, tetapi Anda bisa melihat tabel perbandingan ini untuk melihat bagaimana perintah membandingkan / berbeda:

Apakah ada sesuatu yang saya lewatkan yang akan memungkinkan saya untuk menggunakan repositori git dengan hierarki dan memeriksa potongan-potongan yang saya butuhkan / bekerja dengannya, seperti yang saya lakukan saat ini dengan SVN?

Percabangan?

Apakah GitHub (atau pesaing, seperti BitBucket) memiliki beberapa fitur organisasi proyek yang saya lewatkan?

Tidak yakin apakah ini akan membantu, tetapi Anda mungkin melihat:

Git dilengkapi dengan alat GUI bawaan untuk melakukan ( git-gui ) dan penjelajahan ( gitk ), tetapi ada beberapa alat pihak ketiga untuk pengguna yang mencari pengalaman khusus platform.

... sekali lagi, tidak yakin apakah ada alat yang dapat membantu Anda merasakan apa yang mungkin terjadi.

Untuk lebih jelasnya, saya tidak yakin dengan Anda tingkat keahlian Git ... jika Anda baru mengenal Git / GitHub, menggunakan GUI mungkin merupakan cara cepat / mudah bagi Anda untuk merasakan sesuatu. Saya pribadi suka menggunakan GitHub resmi untuk aplikasi Mac / Windows.

Kegagalan itu, apa "cara git" yang diterima secara umum untuk menangani situasi ini (membuang proyek yang tidak dimaksudkan untuk rilis, menyimpannya secara offline, menggabungkannya entah bagaimana, dll, dll.)?

Jika saya jadi Anda, saya akan menggunakan repositori.

Berapa banyak repositori pribadi yang Anda butuhkan?

Jika Anda ingin menggunakan GitHub, salah satu solusinya mungkin dengan mendapatkan paket termurah dan menggunakan beberapa repo pribadi untuk menampung semua tes / kode non-publik Anda. Anda bisa menggunakan struktur folder di maincabang Anda untuk mempertahankan struktur hierarkis, atau Anda bisa menggunakan beberapa cabang untuk menjaga hal-hal lebih terpisah.

Kiat: Jika Anda menggunakan versi Git yang lebih baru, Anda dapat menarik cabang tertentu menggunakan git clone -b mybranch --single-branch git://sub.domain.com/repo.git:

Saya harus memperingatkan Anda, menggunakan cabang untuk mengatur kode (seperti folder) sebenarnya bukan cara terbaik untuk melakukan sesuatu (meskipun, tidak ada yang mengatakan Anda tidak bisa menuju rute ini).

(Lihat jawaban saya di sini untuk info terkait sehubungan dengan cabang GitHub. )

Sekali lagi, saya pikir beberapa repo adalah cara untuk pergi.

Anda mungkin bertanya pada diri sendiri apakah kode Anda benar-benar perlu pribadi; mungkinkah Anda bisa go public dengan kode tersebut tanpa dampak?

Letakkan pustaka di GitHub, terus hosting SVN saya sendiri untuk semua proyek lainnya, gunakan solusi non-VCS untuk backup di luar situs (blech),

Jika Anda menuju rute ini, Dropbox (atau yang serupa) mungkin merupakan cara yang baik untuk mendapatkan beberapa bentuk kontrol versi dan sinkronisasi untuk cadangan luar-situs Anda.

Letakkan perpustakaan dan perangkat lunak yang saya rencanakan untuk rilis di GitHub (masing-masing sebagai publik dan pribadi), terus hosting SVN saya sendiri untuk proyek yang tidak terlalu saya pedulikan dan saya hanya akan meninjau kembali untuk menyegarkan ingatan saya tentang bagaimana menerapkan XYZ, memutuskan bahwa saya bersedia untuk menghapusnya jika rumah saya meledak (blech ganda),

Ini membawa saya kembali ke pertanyaan "Apakah Anda sudah membayar untuk hosting? Jika demikian, Anda dapat menginstal host Git Anda sendiri"; keuntungannya adalah, Anda dapat memiliki semua kode sumber di bawah payung Git, bahkan jika itu tidak semuanya berada di host yang sama (yaitu, gunakan GitHub untuk hal-hal umum yang ingin Anda pamerkan).

Letakkan semuanya di [GitHub dan / atau BitBucket], berurusan dengan memiliki beberapa repositori konyol dengan mencari apa yang saya butuhkan / mempertahankan beberapa set pointer offline ke akun [GitHub dan / atau BitBucket] saya (triple blech)

---> Lihat jawaban singkat saya di atas. ^^^^^^

mhulse
sumber
0

Inilah yang saya lakukan:

  • Letakkan proyek mandiri yang ingin Anda publikasikan di repo GitHub yang terpisah . Karena GitHub saat ini adalah tempat de facto untuk berbagi kode, itu akan membuat proyek Anda lebih mudah ditemukan / lebih mudah untuk dilakukan.
  • Untuk proyek apa pun yang ingin Anda jaga kerahasiaannya, masukkan ke dalam repo pribadi yang diselenggarakan oleh penyedia pilihan Anda. Seperti yang telah disebutkan, Bitbucket adalah pilihan yang baik untuk ini karena memungkinkan untuk repo pribadi tanpa batas.
  • Masukkan semua kode lain ke dalam repo "sampah". Ini dapat mencakup kode yang digunakan untuk belajar dan menguji serta potongan kecil yang tidak benar-benar bagian dari proyek. Selama tidak ada alasan untuk merahasiakan ini, Anda dapat meng-host repo ini di GitHub juga.

    Selain semua keuntungan biasa dari kontrol versi (yang sudah Anda miliki dengan SVN), sekarang kode Anda dicadangkan secara online. Jika salah satu kode sampah Anda berubah menjadi proyek, Anda bisa memutarnya menjadi repo sendiri.

    Anda dapat memasukkan kode ini ke dalam repo yang terpisah atau menggunakan sesuatu yang mewah seperti git submodules atau subtree, tetapi saya merasa lebih mudah untuk menyimpannya dalam satu repo dan mengelolanya menggunakan folder. Ini jauh lebih sederhana dan git cukup cepat sehingga ukuran repo tidak menjadi masalah.

bupupin
sumber
0

Salah satu teknik yang mungkin adalah menggunakan cabang.

Cabang dalam git repo hanyalah petunjuk yang harus dilakukan, mereka tidak harus berhubungan satu sama lain dengan cara apa pun. Jadi Anda dapat membuat repo "minorprojects" pada layanan hosting dan kemudian menggunakan cabang dalam repo itu untuk setiap proyek. Jika sebuah proyek kecil tumbuh, Anda dapat dengan mudah memindahkan cabang ke repo itu sendiri.

Secara lokal Anda dapat menyimpan cabang dalam repo lokal yang terpisah (tidak harus ada pemetaan 1: 1 antara repo lokal dan jarak jauh) atau memiliki satu repo lokal dan menggunakan git worktree untuk memelihara beberapa pohon yang bekerja. Secara pribadi saya curiga pendekatan pertama kurang rawan kesalahan.

Peter Green
sumber
Menyimpannya di repo jarak jauh yang sama tidak berarti Anda harus menggunakan repo lokal yang sama.
Peter Green
Lupakan saja komentar terakhir saya. Saya baru saja belajar tentang git worktreeperintah, yang memungkinkan Anda membuat pohon kerja tambahan untuk repositori, memungkinkan Anda memeriksa beberapa cabang secara bersamaan. Dengan ini, kerugian dari pendekatan Anda pada dasarnya menghilang: Cukup buat pohon kerja untuk setiap cabang independen, dan gunakan seperti repo independen. Mungkin ide yang baik untuk menambahkan ini ke jawaban Anda :-)
cmaster - mengembalikan monica
@ cmaster, selesai ...
Peter Green