有效地同時使用Git和Dropbox?

如何有效地一塊兒使用GitDropboxhtml


#1樓

我遇到了相似的問題,併爲此建立了一個小腳本。 想法是儘量簡單地將Dropbox與Git一塊兒使用。 目前,我已經快速實現了Ruby代碼,而且我將很快添加更多代碼。 git

該腳本可從https://github.com/nuttylabs/box-git訪問。 github


#2樓

對於使用Dropbox的小型團隊: 安全

若是每一個開發人員在Dropbox上都有本身的可寫的裸存儲庫( 可拖給其餘開發人員),則這將促進代碼共享而不會形成損壞! bash

而後,若是您想要一個集中的「主線」,則可讓一個開發人員從他們本身的存儲庫中管理全部推送到它的推送。 服務器


#3樓

我認爲Dropbox上的Git很棒。 我一直都在用它。 我有多臺計算機(兩臺在家,一臺在工做),我將Dropbox用做中央裸倉庫。 因爲我不想將其託管在公共服務上,而且我沒法訪問老是能夠經過ssh鏈接到的服務器,所以Dropbox經過在後臺同步(很是快)來解決此問題。 dom

安裝程序是這樣的: ssh

~/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

從那裏,您能夠克隆與您的Dropbox賬戶關聯(或與他人共享此目錄)的~/Dropbox/git/project.git ,您能夠執行全部正常的Git操做,它們將同步到您的全部其餘機器自動。 加密

我寫了一篇關於版本控制的博客文章( 舊的連接已 失效 ),介紹了個人推理以及如何設置環境,該文章基於我在Ruby on Rails上的開發經驗,但實際上它能夠應用於任何東西。 spa


#4樓

我喜歡Dan McNevin投票最多的答案。 我最終屢次執行git命令序列,並決定製做一個腳本。 因此這裏是:

#!/bin/bash

# Usage
usage() {
    echo "Usage: ${0} -m [ master-branch-directory ] -r [ remote-branch-directory ] [ project-name ]"
    exit 1
}

# Defaults
defaults() {
    masterdir="${HOME}/Dropbox/git"
    remotedir="${PWD}"
    gitignorefile="# OS generated files #\n\n.DS_Store\n.DS_Store?\n.Spotlight-V100\n.Trashes\nehthumbs.db\nThumbs.db"
}

# Check if no arguments
if [ ${#} -eq 0 ] ; then
    echo "Error: No arguments specified"
    usage
fi

#Set defaults
defaults

# Parse arguments
while [ ${#} -ge 1 ]; do
    case "${1}" in
        '-h' | '--help' ) usage ;;
        '-m' )
            shift
            masterdir="${1}"
            ;;
        '-r' )
            shift
            remotedir="${1}"
            ;;
        * )
            projectname="${1##*/}"
            projectname="${projectname%.git}.git"
            ;;
    esac
    shift
done

# check if specified directories and project name exists
if [ -z "${projectname}" ]; then
    echo "Error: Project name not specified"
    usage
fi

if [ ! -d "${remotedir}" ]; then
    echo "Error: Remote directory ${remotedir} does not exist"
    usage
fi

if [ ! -d "${masterdir}" ]; then
    echo "Error: Master directory ${masterdir} does not exist"
    usage
fi

#absolute paths
remotedir="`( cd \"${remotedir}\" && pwd )`"
masterdir="`( cd \"${masterdir}\" && pwd )`"

#Make master git repository
cd "${masterdir}"
git init --bare "${projectname}"

#make local repository and push to master
cd "${remotedir}"
echo -e "${gitignorefile}" > .gitignore # default .gitignore file
git init
git add .
git commit -m "first commit"
git remote add origin "${masterdir}/${projectname}"
git push -u origin master

#done
echo "----- Locations -----"
echo "Remote branch location: ${remotedir}"
echo "Master branch location: ${masterdir}"
echo "Project Name: ${projectname}"

該腳本僅須要一個項目名稱。 它將在~/Dropbox/git/以指定名稱生成一個git存儲庫,並將當前目錄的所有內容推送到新建立的origin master分支。 若是給出多個項目名稱,則將使用最右邊的項目名稱參數。

(可選)-r命令參數指定將推送到原始主機的遠程分支。 也可使用-m參數指定項目原始主文件的位置。 默認的.gitignore文件也放置在遠程分支目錄中。 在腳本中指定目錄和.gitignore文件的默認值。


#5樓

我使用Mercurial(或Git)+ TrueCrypt + Dropbox進行加密的遠程備份

最酷的事情是,若是您修改代碼的一小部分,Dropbox不會同步整個TrueCrypt容器。 同步時間與更改量大體成比例。 即便已加密,TrueCrypt + Dropbox的組合也能夠很好地利用塊密碼+塊級別同步。

其次,總體式加密容器不只增長了安全性,並且還減小了存儲庫損壞的機會。

警告:可是,在運行Dropbox時不要安裝容器必須很是當心。 若是2個不一樣的客戶端將不一樣版本簽入到容器中,則解決衝突也可能會很痛苦。 所以,它僅對使用備份進行備份的我的有用,對團隊而言則不可行。

設定:

  • 建立一個Truecrypt容器(多個千兆字節就能夠了)
  • 在Truecrypt偏好設置下,取消選中preserve modification timestamp *。
  • 如上文Dan( https://stackoverflow.com/a/1961515/781695 )所述建立一個倉庫

用法:

  • 退出Dropbox
  • 安裝容器,推進您的更改,卸下
  • 運行投寄箱

PS取消選中preserve modification timestamp通知Dropbox文件已被修改,應該進行同步。 請注意,即便您不更改其中的任何文件,安裝容器也會修改時間戳。 若是您不但願發生這種狀況,只需將卷掛載爲read-only

相關文章
相關標籤/搜索