git
version-control
cloud
dropbox
n1kh1lp
sumber
sumber
Jawaban:
Saya pikir Git di Dropbox hebat. Saya menggunakannya sepanjang waktu. Saya memiliki beberapa komputer (dua di rumah dan satu di tempat kerja) yang saya gunakan Dropbox sebagai repositori telanjang pusat. Karena saya tidak ingin meng-host-nya di layanan publik, dan saya tidak memiliki akses ke server yang selalu bisa saya ssh, Dropbox menangani ini dengan menyinkronkan (sangat cepat) di latar belakang.
Setup adalah sesuatu seperti ini:
Dari sana, Anda dapat mengkloning
~/Dropbox/git/project.git
yang telah dikaitkan dengan akun Dropbox Anda (atau telah berbagi direktori ini dengan orang-orang), Anda dapat melakukan semua operasi Git normal dan mereka akan disinkronkan ke semua mesin lain secara otomatis.Saya menulis posting blog, Pada Kontrol Versi , ( tautan lama mati ) pada alasan saya dan bagaimana saya mengatur lingkungan saya, itu didasarkan pada pengalaman pengembangan Ruby on Rails saya , tetapi dapat diterapkan pada apa saja, sungguh.
sumber
Cara yang tepat untuk melakukan ini adalah menggunakan git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox
Membuat repo kosong Anda sendiri di Dropbox menyebabkan banyak masalah. Anish (pencipta perpustakaan) menjelaskan yang terbaik :
sumber
Jawaban ini didasarkan pada Mercurial pengalaman , bukan Git, tetapi pengalaman ini mengatakan menggunakan Dropbox dengan cara ini meminta repositori yang korup jika bahkan ada kemungkinan Anda akan memperbarui repositori berbasis Dropbox yang sama dari mesin yang berbeda di berbagai waktu (Mac, Unix, Windows dalam kasus saya).
Saya tidak memiliki daftar lengkap tentang hal-hal yang dapat salah, tetapi inilah contoh spesifik yang menggigit saya. Setiap mesin memiliki gagasan sendiri tentang karakter akhir baris dan bagaimana karakter huruf besar / kecil ditangani dalam nama file. Dropbox dan Git / Mercurial menangani ini sedikit berbeda (saya tidak ingat perbedaan persisnya). Jika Dropbox memperbarui repositori di belakang repositori Git / Mercurial, presto, broken. Ini terjadi segera dan tidak terlihat, sehingga Anda bahkan tidak tahu repositori Anda rusak sampai Anda mencoba memulihkan sesuatu darinya.
Setelah menggali dari satu kekacauan melakukan hal-hal seperti ini, saya telah menggunakan resep berikut ini dengan sukses besar dan tidak ada tanda-tanda masalah. Cukup pindahkan repositori Anda dari Dropbox. Gunakan Dropbox untuk yang lainnya; dokumentasi, file JAR , apa pun yang Anda suka. Dan gunakan GitHub (Git) atau Bitbucket (Mercurial) untuk mengelola repositori itu sendiri. Keduanya gratis sehingga ini tidak menambah biaya, dan masing-masing alat sekarang memainkan kekuatannya.
Menjalankan Git / Mercurial di atas Dropbox tidak menambah apa pun kecuali risiko. Jangan lakukan itu.
sumber
Terkait dengan tim kecil yang menggunakan Dropbox:
Jika setiap pengembang memiliki repositori kosong yang bisa ditulisi di Dropbox, yang hanya menarik pengembang lain, maka ini memfasilitasi pembagian kode tanpa risiko korupsi!
Kemudian jika Anda ingin 'arus utama' terpusat, Anda dapat meminta satu pengembang mengelola semua dorongan dari repo mereka sendiri.
sumber
Saya tidak ingin meletakkan semua proyek saya di bawah satu repositori Git, saya juga tidak ingin masuk dan menjalankan kode ini untuk setiap proyek tunggal, jadi saya membuat skrip Bash yang akan mengotomatiskan proses. Anda dapat menggunakannya pada satu atau beberapa direktori - sehingga dapat melakukan kode dalam posting ini untuk Anda atau dapat melakukannya pada beberapa proyek sekaligus.
sumber
Saya tidak berpikir bahwa menggunakan Git dan Dropbox adalah cara untuk pergi ... Pikirkan saja fitur-fiturnya dari keduanya:
Git:
Dropbox:
Dan jika Anda khawatir berbagi beberapa file Anda, mengapa tidak mengartikannya? Dan kemudian Anda bisa mendapatkan keuntungan terbesar dari Dropbox untuk Git, yaitu memiliki file publik dan pribadi ...
sumber
Sekarang tahun 2015, dan pada tiga hari yang lalu, alat baru berdasarkan Dropbox API v2 telah dibuat untuk menggunakan git di Dropbox dengan aman. Ini bekerja melawan API daripada menggunakan klien desktop, dan dengan benar menangani beberapa dorongan simultan ke repositori yang dihosting di folder bersama.
Setelah dikonfigurasi, ini memungkinkan seseorang untuk mengatur git remote persis seperti git remote lainnya.
sumber
Saya menggunakan Mercurial (atau Git) + TrueCrypt + Dropbox untuk cadangan jarak jauh terenkripsi .
Yang paling keren adalah Dropbox TIDAK menyinkronkan seluruh wadah TrueCrypt jika Anda memodifikasi sebagian kecil kode Anda. Waktu sinkronisasi kira-kira sebanding dengan jumlah perubahan. Meskipun dienkripsi, kombinasi TrueCrypt + Dropbox membuat penggunaan blok cipher + sinkronisasi tingkat blok menjadi sangat baik.
Kedua, wadah terenkripsi monolitik tidak hanya menambah keamanan, tetapi juga mengurangi kemungkinan korupsi penyimpanan .
Perhatian: Namun Anda harus sangat berhati-hati untuk tidak memasang wadah saat Dropbox berjalan. Bisa juga menyusahkan untuk menyelesaikan konflik jika 2 klien berbeda check-in versi yang berbeda ke wadah. Jadi, praktis hanya untuk satu orang yang menggunakannya untuk cadangan, bukan untuk tim.
Mendirikan:
preserve modification timestamp
*.Pemakaian:
PS Hapus centang pada
preserve modification timestamp
dropbox yang memberitahu bahwa file telah dimodifikasi dan harus disinkronkan. Perhatikan bahwa pemasangan wadah memodifikasi stempel waktu meskipun Anda tidak mengubah file apa pun di dalamnya. Jika Anda tidak ingin itu terjadi, cukup pasang volume asread-only
sumber
Saya suka jawabannya oleh Dan McNevin! Saya menggunakan Git dan Dropbox bersama sekarang juga, dan saya menggunakan beberapa alias di .bash_profile saya sehingga alur kerja saya terlihat seperti ini:
Ini adalah alias saya:
sumber
Kami menggunakan metode ini (membuat repositori telanjang di Dropbox) pada folder berbagi .
Sekelompok kecil pengembang dapat menarik dari repositori kosong yang disinkronkan dan membuat klon lokal. Setelah unit kerja selesai, kami mendorong kembali ke asal.
Satu hal yang saya lewatkan adalah cara yang baik untuk mengirim e-mail dengan informasi perubahan-set begitu dorongan ke asal terjadi. Kami menggunakan Google Wave untuk melacak perubahan secara manual.
sumber
Saya telah menggunakan Mercurial dengan cara yang disarankan dan mendesak Anda untuk berhati-hati, terutama jika ada mesin yang berbeda. Forum Dropbox penuh dengan keluhan masalah nama file misterius yang muncul secara spontan. Hg (dan saya kira Git) tidak akan melihat atau mengeluh selama checkin rutin dan Anda hanya akan mendengar tentang korupsi ketika mengeluhkan repo yang korup ketika Anda mencoba menggunakannya secara nyata. Kabar buruk. Seandainya saya bisa lebih spesifik tentang masalah dan penyelesaiannya; Saya masih mencoba menggali dari kekacauan ini sendiri.
sumber
Ada juga proyek open source (kumpulan skrip [Linux, Mac, Win] lintas platform) yang melakukan semua rincian rumit dari manajemen repositori dengan sejumlah (3-4) perintah.
https://github.com/karalabe/gitbox/wiki
Penggunaan sampel adalah:
Setelah itu penggunaan normal git:
Periksa wiki proyek dan manual untuk referensi perintah lengkap dan tutorial.
sumber
Saya menyimpan repo non-Github saya di Dropbox. Satu peringatan yang saya temui adalah menyinkronkan setelah menginstal ulang. Dropbox akan mengunduh file terkecil terlebih dahulu sebelum pindah ke yang lebih besar. Tidak masalah jika Anda mulai di malam hari dan kembali setelah akhir pekan :-)
Utas saya - http://forums.dropbox.com/topic.php?id=29984&replies=6
sumber
Sekarang pada tahun 2014, saya telah menggunakan Git dan Dropbox selama sekitar satu setengah tahun tanpa masalah. Beberapa poin:
git push
mendorong ke repositori jarak jauh, sehingga jika pernah rusak, saya dapat dengan mudah memulihkannya.C:\Users
denganmklink /D link target
karena beberapa perpustakaan diarahkan ke lokasi absolut.sumber
Saya suka jawaban terpilih oleh Dan McNevin. Saya akhirnya melakukan urutan perintah git terlalu banyak dan memutuskan untuk membuat skrip. Jadi begini:
Script hanya membutuhkan nama proyek. Ini akan menghasilkan repositori git di
~/Dropbox/git/
bawah nama yang ditentukan dan akan mendorong seluruh isi direktori saat ini ke cabang master asal yang baru dibuat. Jika lebih dari satu nama proyek diberikan, argumen nama proyek paling kanan akan digunakan.Secara opsional, argumen perintah -r menentukan cabang jarak jauh yang akan mendorong ke master asal. Lokasi master asal proyek juga dapat ditentukan dengan argumen -m. File .gitignore default juga ditempatkan di direktori cabang jauh. Default file direktori dan .gitignore ditentukan dalam skrip.
sumber
Pendekatan lain:
Semua jawaban sejauh ini, termasuk jawaban @Dan yang paling populer, membahas gagasan menggunakan Dropbox untuk memusatkan repositori bersama alih-alih menggunakan layanan yang berfokus pada git seperti github, bitbucket, dll.
Tetapi, karena pertanyaan awal tidak secara spesifik menjelaskan arti dari menggunakan "Git dan Dropbox secara efektif", mari kita bekerja dengan pendekatan lain: "Menggunakan Dropbox untuk menyinkronkan hanya worktree."
Cara memiliki langkah-langkah ini:
di dalam direktori proyek, satu menciptakan
.git
direktori kosong (misalnyamkdir -p myproject/.git
)batalkan sinkronisasi
.git
direktori di Dropbox. Jika menggunakan Aplikasi Dropbox: buka Preferensi, Sinkronisasi, dan "pilih folder yang akan disinkronkan", di mana.git
direktori tersebut harus tidak ditandai. Ini akan menghapus.git
direktori.jalankan
git init
di direktori proyekIni juga berfungsi jika
.git
sudah ada, maka hanya lakukan langkah 2. Dropbox akan menyimpan salinan file git di situs web.Langkah 2 akan menyebabkan Dropbox tidak menyinkronkan struktur sistem git, yang merupakan hasil yang diinginkan untuk pendekatan ini.
Mengapa seseorang menggunakan pendekatan ini?
Perubahan yang belum didorong akan memiliki cadangan Dropbox, dan akan disinkronkan di seluruh perangkat.
Jika Dropbox mengacaukan sesuatu saat menyinkronkan antar perangkat,
git status
dangit diff
akan mudah untuk menyelesaikannya.Ini menghemat ruang di akun Dropbox (seluruh riwayat tidak akan disimpan di sana)
Ini menghindari kekhawatiran yang diangkat oleh @dubek dan @Ates dalam komentar pada jawaban @ Dan, dan kekhawatiran oleh @clu pada jawaban lain .
Keberadaan remote di tempat lain (github, dll.) Akan berfungsi dengan baik dengan pendekatan ini.
Bekerja di cabang yang berbeda membawa beberapa masalah, yang perlu dijaga:
Salah satu masalah potensial adalah memiliki Dropbox (yang tidak perlu?) Menyinkronkan banyak file secara potensial ketika seseorang memeriksa cabang yang berbeda.
Jika dua atau lebih perangkat Dropbox yang disinkronkan memiliki cabang yang berbeda diperiksa, perubahan yang tidak dilakukan untuk kedua perangkat dapat hilang,
Salah satu cara mengatasi masalah ini adalah dengan menggunakan
git worktree
untuk menjaga checkout cabang di direktori yang terpisah.sumber
xattr -w com.dropbox.ignored 1 /path/to/somewhere
,.Untuk 2 sen saya, Dropbox hanya masuk akal untuk penggunaan pribadi di mana Anda tidak ingin repot-repot mendapatkan host repo pusat. Untuk pengembangan profesional apa pun Anda mungkin akan menciptakan lebih banyak masalah daripada yang akan Anda selesaikan, seperti yang telah disebutkan beberapa kali di utas, Dropbox tidak dirancang untuk kasus penggunaan ini. Yang mengatakan, metode yang sangat aman untuk membuang repositori di Dropbox tanpa plugin atau alat pihak ketiga adalah dengan menggunakan bundel. Saya memiliki alias berikut
.gitconfig
untuk menghemat pengetikan:Contoh:
sumber
Saya telah menghadapi masalah yang sama dan telah membuat skrip kecil untuk hal yang sama. Idenya adalah menggunakan Dropbox dengan Git sesederhana mungkin. Saat ini, saya telah dengan cepat mengimplementasikan kode Ruby , dan saya akan segera menambahkan lebih banyak.
Script dapat diakses di
https://github.com/nuttylabs/box-git
.sumber
Tanpa menggunakan alat integrasi pihak ketiga, saya bisa sedikit meningkatkan kondisinya dan menggunakan DropBox dan layanan cloud disk serupa lainnya seperti SpiderOak dengan Git.
Tujuannya adalah untuk menghindari sinkronisasi di tengah-tengah modifikasi file-file ini, karena dapat mengunggah status parsial dan kemudian akan mengunduhnya kembali, benar-benar merusak kondisi git Anda.
Untuk menghindari masalah ini, saya melakukan:
git bundle create my_repo.git --all
.Ini tidak sempurna karena tidak ada jaminan itu tidak akan mengacaukan negara git lagi, tetapi itu membantu dan untuk saat ini saya tidak mendapatkan masalah.
sumber
Di MacOS Anda juga dapat menghentikan Dropbox, melakukan perubahan, lalu meluncurkan kembali Dropbox. Saya menggunakan kombinasi berikut dan cukup senang dengan itu:
Di keduanya (direktori proyek yang dikelola git lokal dan repositori git jarak jauh Anda yang terletak di Dropbox) jalankan perintah berikut untuk menonaktifkan pengemasan otomatis (yang merupakan masalah utama dengan sinkronisasi dropbox)
Kemudian dari waktu ke waktu, kompres repositori dengan dropbox dinonaktifkan. Misalnya saya melakukan hal berikut dalam skrip bash-build-saya setiap kali saya membuat rilis baru dari aplikasi saya.
sumber