我遇到了相似的问题,并为此建立了一个小脚本。 想法是尽量简单地将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