有效地同时使用Git和Dropbox?

血红的双手。 提交于 2019-12-11 22:05:32

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

如何有效地一起使用GitDropbox


#1楼

我遇到了类似的问题,并为此创建了一个小脚本。 想法是尽可能简单地将Dropbox与Git一起使用。 目前,我已经快速实现了Ruby代码,并且我将很快添加更多代码。

该脚本可从https://github.com/nuttylabs/box-git访问。


#2楼

对于使用Dropbox的小型团队:

如果每个开发人员在Dropbox上都有自己的可写的裸存储库( 可拖给其他开发人员),则这将促进代码共享而不会造成损坏!

然后,如果您想要一个集中的“主线”,则可以让一个开发人员从他们自己的存储库中管理所有推送到它的推送。


#3楼

我认为Dropbox上的Git很棒。 我一直都在用它。 我有多台计算机(两台在家,一台在工作),我将Dropbox用作中央裸仓库。 由于我不想将其托管在公共服务上,并且我无法访问总是可以通过ssh连接到的服务器,因此Dropbox通过在后台同步(非常快)来解决此问题。

安装程序是这样的:

~/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上的开发经验,但实际上它可以应用于任何东西。


#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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!