我认为在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/git/project.git
目录(无论它是否属于您的 Dropbox 帐户或共享多个帐户),然后执行所有常规 Git 操作 - 它们将自动同步到您的所有其他计算机中。
我写了一篇名为“On Version Control” 的博客文章,在其中介绍了我的环境设置背后的原因。它基于我的Ruby on Rails开发经验,但实际上可以适用于任何内容。
我不想把所有的项目都放在一个 Git 存储库下,也不想为每个项目单独运行此代码,所以我编写了一个 Bash 脚本,可以自动化此过程。您可以将其用于一个或多个目录 - 因此它可以为您执行本帖子中的代码,也可以同时处理多个项目。
#!/bin/sh
# Script by Eli Delventhal
# Creates Git projects for file folders by making the origin Dropbox. You will need to install Dropbox for this to work.
# Not enough parameters, show help.
if [ $# -lt 1 ] ; then
cat<<HELP
projects_to_git.sh -- Takes a project folder and creates a Git repository for it on Dropbox
USAGE:
./projects_to_git.sh file1 file2 ..
EXAMPLES:
./projects_to_git.sh path/to/MyProjectDir
Creates a git project called MyProjectDir on Dropbox
./projects_to_git.sh path/to/workspace/*
Creates a git project on Dropbox for every folder contained within the workspace directory, where the project name matches the folder name
HELP
exit 0
fi
# We have enough parameters, so let's actually do this thing.
START_DIR=$(pwd)
# Make sure we have a connection to Dropbox
cd ~
if [ -s 'Dropbox' ] ; then
echo "Found Dropbox directory."
cd Dropbox
if [ -s 'git' ] ; then
echo " Dropbox Git directory found."
else
echo " Dropbox Git directory created."
mkdir git
fi
else
echo "You do not have a Dropbox folder at ~/Dropbox! Install Dropbox. Aborting..."
exit 0
fi
# Process all directories matching the passed parameters.
echo "Starting processing for all files..."
for PROJ in $*
do
if [ -d $PROJ ] ; then
PROJNAME=$(basename $PROJ)
echo " Processing $PROJNAME..."
# Enable Git with this project.
cd $PROJ
if [ -s '.git' ] ; then
echo " $PROJNAME is already a Git repository, ignoring..."
else
echo " Initializing Git for $PROJNAME..."
git init -q
git add .
git commit -m "Initial creation of project." -q
# Make the origin Dropbox.
cd ~/Dropbox/git
if [ -s $PROJNAME ] ; then
echo " Warning! $PROJNAME already exists in Git! Ignoring..."
else
echo " Putting $PROJNAME project on Dropbox..."
mkdir $PROJNAME
cd $PROJNAME
git init -q --bare
fi
# Link the project to the origin
echo " Copying local $PROJNAME to Dropbox..."
cd $PROJ
git remote add origin "~/Dropbox/git/$PROJNAME"
git push -q origin master
git branch --set-upstream master origin/master
fi
fi
done
echo "Done processing all files."
cd $START_DIR
现在是2015年,就在三天前,基于Dropbox API v2的新工具已经被创建出来,可以安全地在Dropbox上使用git。它与API交互而非使用桌面客户端,并正确处理托管在共享文件夹中的仓库的多个同时推送。
配置完成后,它允许您设置一个与任何其他git远程相同的git远程。
git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"
关于小团队使用Dropbox:
如果每个开发人员在Dropbox上拥有自己的可写裸库,并且其他开发人员只能进行拉取操作,则可以实现代码共享,而不会发生破坏的风险!
然后,如果您想要一个集中的“主线”,您可以让一位开发人员从他们自己的仓库管理所有推送到该主线的更改。
我认为使用Git和Dropbox并不是一个好的选择……考虑一下它们各自的特点:
Git:
Dropbox:
如果你担心共享某些文件,何不对它们进行加密呢?这样你就能同时享受到Dropbox和Git的最大优势,即拥有公共和私有文件……
保留修改时间戳
*。用法:
附:取消勾选保留修改时间戳
告诉Dropbox文件已经被修改,应该同步。请注意,即使您没有在其中更改任何文件,挂载容器也会修改时间戳。如果您不希望发生这种情况,请将卷挂载为只读
我喜欢Dan McNevin的答案!我现在也在同时使用Git和Dropbox,并在我的.bash_profile中使用了几个别名,所以我的工作流程看起来像这样:
~/project $ git init
~/project $ git add .
~/project $ gcam "first commit"
~/project $ git-dropbox
这些是我的别名:
alias gcam='git commit -a -m'
alias gpom='git push origin master'
alias gra='git remote add origin'
alias git-dropbox='TMPGP=~/Dropbox/git/$(pwd | awk -F/ '\''{print $NF}'\'').git;mkdir -p $TMPGP && (cd $TMPGP; git init --bare) && gra $TMPGP && gpom'