有效地同时使用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

相关文章
相关标签/搜索