Pertanyaan Menggunakan Git dan Dropbox secara efektif?


Bagaimana saya menggunakannya Git dan Dropbox bersama secara efektif?


1062
2017-12-25 08:41


asal


Jawaban:


Saya pikir Git di Dropbox itu hebat. Saya menggunakannya sepanjang waktu. Saya memiliki banyak komputer (dua di rumah dan satu di tempat kerja) yang saya gunakan Dropbox sebagai repositori telanjang pusat. Karena saya tidak ingin menghostingnya di layanan publik, dan saya tidak memiliki akses ke server yang selalu dapat saya ssh, Dropbox akan menangani ini dengan menyinkronkan (sangat cepat) di latar belakang.

Penyiapannya seperti ini:

~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/git

~/Dropbox/git $ git init --bare project.git
~/Dropbox/git $ cd ~/project

~/project $ git remote add origin ~/Dropbox/git/project.git
~/project $ git push -u origin master

Dari sana, Anda bisa mengkloning ~/Dropbox/git/project.git yang telah Anda kaitkan dengan akun Dropbox Anda (atau telah membagikan direktori ini dengan orang-orang), Anda dapat melakukan semua operasi Git normal dan mereka akan disinkronkan ke semua mesin Anda yang lain secara otomatis.

Saya menulis posting blog, Pada Kontrol Versi, (tautan lama  mati) pada alasan saya dan bagaimana saya mengatur lingkungan saya, itu berdasarkan pada saya Ruby on Rails pengalaman pengembangan, tetapi dapat diterapkan pada apa saja, sungguh.


1350
2017-12-25 17:10



Cara yang tepat untuk melakukan ini adalah menggunakan git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox

Membuat repo telanjang Anda sendiri di Dropbox menyebabkan banyak masalah. Anish (pencipta perpustakaan) menjelaskannya dengan baik:

Penyebab utama masalah ini adalah desktop Dropbox   klien dirancang untuk menyinkronkan file, bukan repositori Git. Tanpa   penanganan khusus untuk repositori Git, itu tidak mempertahankan hal yang sama   jaminan sebagai Git. Operasi pada repositori jauh tidak lagi   operasi atom, dan bersamaan atau waktu sial dengan   sinkronisasi dapat menghasilkan repositori yang rusak.

Remote Git tradisional menjalankan kode di sisi server untuk membuat ini berfungsi   dengan benar, tetapi kita tidak bisa melakukan itu.

Solusi: Adalah mungkin untuk menyelesaikan ini dengan benar. Itu mungkin untuk digunakan   Git dengan Dropbox dan memiliki jaminan keamanan dan konsistensi yang sama   sebagai remote Git tradisional, bahkan ketika ada banyak pengguna dan   operasi bersamaan!

Untuk pengguna, itu semudah menggunakan git-remote-dropbox, remote Git   pembantu yang bertindak sebagai jembatan dua arah transparan antara Git dan   Dropbox dan memelihara semua jaminan dari remote Git tradisional.   Itu bahkan aman untuk digunakan dengan folder bersama, sehingga dapat digunakan untuk   kolaborasi (yay repos pribadi tak terbatas dengan unlimited   kolaborator!).

Dengan remote helper, Anda dapat menggunakan Dropbox sebagai remote Git   dan terus gunakan semua perintah Git biasa seperti git clone, git   tarik, dan git push, dan semuanya akan berfungsi seperti yang diharapkan.


86
2017-08-25 23:25



Jawaban ini didasarkan pada Lincah pengalaman, bukan Git, tetapi pengalaman ini mengatakan menggunakan Dropbox dengan cara ini meminta repositori yang korup jika ada kemungkinan Anda akan memperbarui repositori berbasis Dropbox yang sama dari mesin yang berbeda pada waktu yang berbeda (Mac, Unix, Windows dalam kasus saya ).

Saya tidak memiliki daftar lengkap tentang hal-hal yang bisa salah, tetapi inilah contoh spesifik yang menggigit saya. Setiap mesin memiliki gagasan sendiri tentang karakter akhiran 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 Git / Mercurial, presto, repositori rusak. Hal ini terjadi dengan segera dan tidak terlihat, sehingga Anda bahkan tidak tahu bahwa repositori Anda rusak sampai Anda mencoba memulihkan sesuatu darinya.

Setelah menggali dari satu kekacauan melakukan hal-hal seperti ini, saya telah menggunakan resep berikut dengan sukses besar dan tidak ada tanda-tanda masalah. Cukup pindahkan repositori Anda dari Dropbox. Gunakan Dropbox untuk yang lainnya; dokumentasi, File JAR, apapun yang kamu suka. Dan digunakan GitHub (Git) atau Bitbucket (Mercurial) untuk mengelola repositori itu sendiri. Keduanya gratis jadi ini tidak menambah biaya, dan setiap alat sekarang memainkan kekuatannya.

Menjalankan Git / Mercurial di atas Dropbox tidak menambahkan apa pun kecuali risiko. Jangan lakukan itu.


85
2018-05-01 20:48



Berkaitan dengan tim kecil menggunakan Dropbox:

Jika setiap pengembang memiliki repositori kosong yang ditulis sendiri di Dropbox, yang merupakan tarik saja ke pengembang lain, maka ini memfasilitasi pembagian kode tanpa risiko korupsi!

Kemudian jika Anda menginginkan 'jalur utama' terpusat, Anda dapat memiliki satu pengembang mengelola semua dorongan itu dari repo mereka sendiri.


16
2017-12-04 12:27



Saya tidak ingin menempatkan semua proyek saya di bawah satu repositori Git, saya juga tidak ingin masuk dan menjalankan kode ini untuk setiap proyek, jadi saya membuat Pesta skrip yang akan mengotomatisasi proses. Anda dapat menggunakannya pada satu atau beberapa direktori - sehingga dapat melakukan kode dalam posting ini untuk Anda atau dapat melakukannya pada banyak proyek sekaligus.

#!/bin/sh
# Script by Eli Delventhal
# Creates Git projects for file folders by making the origin Dropbox. You will need to install Dropbox for this to work.

# Not enough parameters, show help.
if [ $# -lt 1 ] ; then

cat<<HELP
projects_to_git.sh -- Takes a project folder and creates a Git repository for it on Dropbox

USAGE:
    ./projects_to_git.sh file1 file2 ..

EXAMPLES:
    ./projects_to_git.sh path/to/MyProjectDir
        Creates a git project called MyProjectDir on Dropbox

    ./projects_to_git.sh path/to/workspace/*
        Creates a git project on Dropbox for every folder contained within the workspace directory, where the project name matches the folder name

HELP
    exit 0
fi

# We have enough parameters, so let's actually do this thing.

START_DIR=$(pwd)

# Make sure we have a connection to Dropbox
cd ~
if [ -s 'Dropbox' ] ; then
    echo "Found Dropbox directory."
    cd Dropbox
    if [ -s 'git' ] ; then
        echo "    Dropbox Git directory found."
    else
        echo "    Dropbox Git directory created."
        mkdir git
    fi
else
    echo "You do not have a Dropbox folder at ~/Dropbox! Install Dropbox. Aborting..."
    exit 0
fi

# Process all directories matching the passed parameters.
echo "Starting processing for all files..."
for PROJ in $*
do
    if [ -d $PROJ ] ; then
        PROJNAME=$(basename $PROJ)
        echo "  Processing $PROJNAME..."

        # Enable Git with this project.
        cd $PROJ
        if [ -s '.git' ] ; then
            echo "    $PROJNAME is already a Git repository, ignoring..."
        else
            echo "    Initializing Git for $PROJNAME..."
            git init -q
            git add .
            git commit -m "Initial creation of project." -q

            # Make the origin Dropbox.

            cd ~/Dropbox/git
            if [ -s $PROJNAME ] ; then
                echo "    Warning! $PROJNAME already exists in Git! Ignoring..."
            else
                echo "    Putting $PROJNAME project on Dropbox..."
                mkdir $PROJNAME
                cd $PROJNAME
                git init -q --bare
            fi

            # Link the project to the origin
            echo "    Copying local $PROJNAME to Dropbox..."
            cd $PROJ
            git remote add origin "~/Dropbox/git/$PROJNAME"
            git push -q origin master
            git branch --set-upstream master origin/master
        fi
    fi
done

echo "Done processing all files."
cd $START_DIR

16
2017-12-02 18:37



Saya tidak berpikir bahwa menggunakan Git dan Dropbox adalah cara untuk pergi ... Coba pikirkan tentang fitur dari keduanya:

Git:

  • Memungkinkan Anda memiliki repositori sentral
  • Memungkinkan Anda memiliki repositori Anda sendiri dengan perubahan Anda sendiri
  • Memungkinkan Anda mengirim dan menerima perubahan dari repositori pusat
  • Memungkinkan banyak orang untuk mengubah file yang sama dan mereka menggabungkannya atau meminta Anda untuk menggabungkannya jika tidak dapat melakukannya
  • Memiliki klien web dan desktop untuk memungkinkan akses ke repositori pusat

Dropbox:

  • Menyimpan segala sesuatu di repositori sentral
  • Memungkinkan Anda memiliki versi file Anda sendiri di server
  • Memaksa Anda untuk mengirim dan menerima perubahan dari repositori pusat
  • Jika beberapa orang mengubah file yang sama, file pertama yang dilakukan diganti dengan commit yang dilakukan kemudian, dan tidak ada penggabungan yang terjadi yang menyulitkan (dan pasti kerugian terbesarnya)
  • Memiliki klien web dan desktop untuk memungkinkan akses ke repositori pusat.

Dan jika Anda khawatir dengan berbagi beberapa file Anda, mengapa tidak menguraikannya? Dan kemudian Anda bisa mendapatkan keuntungan terbesar dari Dropbox ke Git, yaitu, memiliki file publik dan pribadi ...


15
2018-05-26 09:50



Sekarang tahun 2015, dan pada tiga hari yang lalu, a alat baru berdasarkan Dropbox API v2 telah dibuat untuk menggunakan git dengan aman di Dropbox. Ia bekerja melawan API daripada menggunakan klien desktop, dan menangani dengan benar beberapa dorongan simultan ke repositori yang di-host di folder bersama.

Setelah dikonfigurasi, itu memungkinkan seseorang untuk mengatur remote git persis seperti remote git lainnya.

git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"

14
2017-08-23 07:31



Saya menggunakan Mercurial (atau Git) + TrueCrypt + Dropbox untuk terenkripsi terpencil backup.

Hal yang paling keren adalah Dropbox TIDAK menyinkronkan seluruh kontainer TrueCrypt jika Anda memodifikasi sebagian kecil kode Anda. Waktu sinkronisasi kira-kira sebanding dengan jumlah perubahan. Meskipun dienkripsi, kombinasi TrueCrypt + Dropbox membuat penggunaan block cipher + block level sync yang sangat baik.

Kedua, wadah terenkripsi monolitik tidak hanya menambah keamanan, itu juga mengurangi kemungkinan repositori korupsi .

Peringatan: Namun Anda harus sangat berhati-hati karena tidak memiliki wadah yang terpasang saat Dropbox berjalan. Ini juga dapat menjadi masalah untuk menyelesaikan konflik jika 2 klien yang berbeda memeriksa versi yang berbeda ke penampung. Jadi, ini praktis hanya untuk satu orang yang menggunakannya untuk backup, bukan untuk tim.

Mempersiapkan:

  • Buat wadah Truecrypt (beberapa Gigabyte baik-baik saja)
  • Di bawah preferensi Truecrypt, hapus centang preserve modification timestamp*.
  • Buat repo seperti yang disebutkan di atas oleh Dan ( https://stackoverflow.com/a/1961515/781695 )

Pemakaian:

  • Keluar dari Dropbox
  • Pasang wadah, dorong perubahan Anda, lepaskan
  • Jalankan dropbox

P.S. Tidak memeriksa preserve modification timestamp memberi tahu dropbox bahwa file telah dimodifikasi dan harus disinkronkan. Perhatikan bahwa memasang kontainer memodifikasi stempel waktu bahkan jika Anda tidak mengubah file apa pun di dalamnya. Jika Anda tidak ingin itu terjadi, cukup pasang volume sebagai read-only


8
2018-03-03 16:18