我遇到了相似的問題,併爲此建立了一個小腳本。 想法是儘量簡單地將Dropbox與Git一塊兒使用。 目前,我已經快速實現了Ruby代碼,而且我將很快添加更多代碼。 git
該腳本可從https://github.com/nuttylabs/box-git
訪問。 github
對於使用Dropbox的小型團隊: 安全
若是每一個開發人員在Dropbox上都有本身的可寫的裸存儲庫( 僅可拖給其餘開發人員),則這將促進代碼共享而不會形成損壞! bash
而後,若是您想要一個集中的「主線」,則可讓一個開發人員從他們本身的存儲庫中管理全部推送到它的推送。 服務器
我認爲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
我喜歡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文件的默認值。
我使用Mercurial(或Git)+ TrueCrypt + Dropbox進行加密的遠程備份 。
最酷的事情是,若是您修改代碼的一小部分,Dropbox不會同步整個TrueCrypt容器。 同步時間與更改量大體成比例。 即便已加密,TrueCrypt + Dropbox的組合也能夠很好地利用塊密碼+塊級別同步。
其次,總體式加密容器不只增長了安全性,並且還減小了存儲庫損壞的機會。
警告:可是,在運行Dropbox時不要安裝容器必須很是當心。 若是2個不一樣的客戶端將不一樣版本簽入到容器中,則解決衝突也可能會很痛苦。 所以,它僅對使用備份進行備份的我的有用,對團隊而言則不可行。
設定:
preserve modification timestamp
*。 用法:
PS取消選中preserve modification timestamp
通知Dropbox文件已被修改,應該進行同步。 請注意,即便您不更改其中的任何文件,安裝容器也會修改時間戳。 若是您不但願發生這種狀況,只需將卷掛載爲read-only