Câu trả lời:
Tôi nghĩ rằng Git trên Dropbox là tuyệt vời. Tôi sử dụng tất cả thời gian. Tôi có nhiều máy tính (hai ở nhà và một ở nơi làm việc) mà tôi sử dụng Dropbox làm kho lưu trữ trung tâm. Vì tôi không muốn lưu trữ nó trên một dịch vụ công cộng và tôi không có quyền truy cập vào một máy chủ mà tôi luôn có thể ssh đến, Dropbox xử lý việc này bằng cách đồng bộ hóa (rất nhanh) trong nền.
Thiết lập là một cái gì đó như thế này:
~/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
Từ đó, bạn có thể sao chép ~/Dropbox/git/project.git
rằng bạn đã liên kết với tài khoản Dropbox của mình (hoặc đã chia sẻ thư mục này với mọi người), bạn có thể thực hiện tất cả các hoạt động Git bình thường và chúng sẽ được tự động đồng bộ hóa với tất cả các máy khác của bạn.
Tôi đã viết một bài đăng trên blog, On Version Control , ( liên kết cũ đã chết ) về lý do của tôi và cách tôi thiết lập môi trường của mình, nó dựa trên kinh nghiệm phát triển Ruby on Rails của tôi , nhưng thực sự nó có thể được áp dụng cho mọi thứ.
Cách đúng đắn để làm điều này là sử dụng git-remote-dropbox: https://github.com/ biếnathalye / git-remote-dropbox
Tạo repo trần của riêng bạn trong Dropbox gây ra rất nhiều vấn đề. Anish (người tạo ra thư viện) giải thích điều đó tốt nhất :
Nguyên nhân sâu xa của những vấn đề này là máy khách máy tính để bàn Dropbox được thiết kế để đồng bộ hóa các tệp chứ không phải kho lưu trữ Git. Nếu không xử lý đặc biệt cho kho Git, nó không duy trì các đảm bảo giống như Git. Các hoạt động trên kho lưu trữ từ xa không còn là nguyên tử và các hoạt động đồng thời hoặc thời gian không may mắn với đồng bộ hóa có thể dẫn đến một kho lưu trữ bị hỏng.
Git truyền thống từ xa chạy mã ở phía máy chủ để làm cho công việc này hoạt động chính xác, nhưng chúng ta không thể làm điều đó.
Giải pháp: Có thể giải quyết điều này đúng. Có thể sử dụng Git với Dropbox và có cùng đảm bảo an toàn và nhất quán như một điều khiển từ xa Git truyền thống, ngay cả khi có nhiều người dùng và hoạt động đồng thời!
Đối với người dùng, đơn giản như sử dụng git-remote-dropbox, trình trợ giúp từ xa Git hoạt động như một cầu nối hai chiều trong suốt giữa Git và Dropbox và duy trì tất cả các đảm bảo của điều khiển từ xa Git truyền thống. Nó thậm chí còn an toàn để sử dụng với các thư mục được chia sẻ, vì vậy nó có thể được sử dụng để cộng tác (yay repos riêng không giới hạn với cộng tác viên không giới hạn!).
Với trình trợ giúp từ xa, có thể sử dụng Dropbox làm điều khiển từ xa Git và tiếp tục sử dụng tất cả các lệnh Git thông thường như git clone, git pull và git đẩy, và mọi thứ sẽ hoạt động như mong đợi.
Câu trả lời này dựa trên trải nghiệm Mercurial , không phải Git, nhưng trải nghiệm này cho biết sử dụng Dropbox theo cách này sẽ yêu cầu các kho lưu trữ bị hỏng nếu thậm chí có khả năng bạn sẽ cập nhật cùng một kho lưu trữ dựa trên Dropbox từ các máy khác nhau (Mac, Unix, Windows trong trường hợp của tôi).
Tôi không có một danh sách đầy đủ về những điều có thể sai, nhưng đây là một ví dụ cụ thể cắn tôi. Mỗi máy có khái niệm riêng về các ký tự kết thúc dòng và cách xử lý các ký tự chữ hoa / thường trong tên tệp. Dropbox và Git / Mercurial xử lý việc này hơi khác một chút (tôi không nhớ chính xác sự khác biệt). Nếu Dropbox cập nhật kho lưu trữ phía sau kho lưu trữ bị hỏng của Git / Mercurial. Điều này xảy ra ngay lập tức và vô hình, vì vậy bạn thậm chí không biết kho lưu trữ của mình bị hỏng cho đến khi bạn cố gắng khôi phục một cái gì đó từ nó.
Sau khi đào ra từ một mớ hỗn độn làm mọi thứ theo cách này, tôi đã sử dụng công thức sau đây rất thành công và không có dấu hiệu của vấn đề. Đơn giản chỉ cần di chuyển kho lưu trữ của bạn ra khỏi Dropbox. Sử dụng Dropbox cho mọi thứ khác; tài liệu, tập tin JAR , bất cứ điều gì bạn muốn. Và sử dụng GitHub (Git) hoặc Bitbucket (Mercurial) để quản lý kho lưu trữ. Cả hai đều miễn phí nên điều này không thêm gì vào chi phí, và mỗi công cụ hiện phát huy thế mạnh của nó.
Chạy Git / Mercurial trên Dropbox không thêm gì ngoại trừ rủi ro. Đừng làm điều đó.
Liên quan đến các nhóm nhỏ sử dụng Dropbox:
Nếu mỗi nhà phát triển có kho lưu trữ trống có thể ghi của riêng họ trên Dropbox, chỉ dành cho các nhà phát triển khác, thì điều này tạo điều kiện chia sẻ mã mà không có nguy cơ tham nhũng!
Sau đó, nếu bạn muốn có một 'đường chính' tập trung, bạn có thể có một nhà phát triển quản lý tất cả các lần đẩy tới nó từ repo của riêng họ.
Tôi không muốn đặt tất cả các dự án của mình dưới một kho lưu trữ Git, tôi cũng không muốn đi vào và chạy mã này cho mỗi dự án, vì vậy tôi đã tạo một tập lệnh Bash sẽ tự động hóa quy trình. Bạn có thể sử dụng nó trên một hoặc nhiều thư mục - vì vậy nó có thể thực hiện mã trong bài đăng này cho bạn hoặc nó có thể làm điều đó trên nhiều dự án cùng một lúc.
#!/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
Tôi không nghĩ rằng sử dụng Git và Dropbox là cách tốt nhất ... Hãy nghĩ về các tính năng của cả hai:
Git:
Dropbox:
Và nếu bạn lo lắng về việc chia sẻ một số tệp của mình, tại sao không giải mã chúng? Và sau đó bạn có thể nhận được lợi thế lớn nhất của Dropbox cho Git, đó là có các tệp công khai và riêng tư ...
Bây giờ là năm 2015 và tính đến ba ngày trước, một công cụ mới dựa trên Dropbox API v2 đã được tạo để sử dụng git trên Dropbox một cách an toàn. Nó hoạt động dựa trên API thay vì sử dụng máy khách để bàn và xử lý chính xác nhiều lần đẩy đồng thời vào kho lưu trữ được lưu trữ trong một thư mục dùng chung.
Sau khi được cấu hình, nó cho phép một người thiết lập một điều khiển từ xa chính xác như mọi điều khiển từ xa khác.
git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"
Tôi sử dụng Mercurial (hoặc Git) + TrueCrypt + Dropbox để sao lưu từ xa được mã hóa .
Điều thú vị nhất là Dropbox KHÔNG đồng bộ hóa toàn bộ bộ chứa TrueCrypt nếu bạn sửa đổi một phần nhỏ mã của mình. Thời gian đồng bộ hóa tỷ lệ thuận với số lượng thay đổi. Mặc dù được mã hóa, sự kết hợp giữa TrueCrypt + Dropbox giúp sử dụng tuyệt vời mã hóa khối + đồng bộ hóa cấp khối.
Thứ hai, một container được mã hóa nguyên khối không chỉ tăng thêm bảo mật, nó còn làm giảm cơ hội tham nhũng kho lưu trữ .
Thận trọng: Tuy nhiên, bạn phải rất cẩn thận về việc không có thùng chứa được gắn trong khi Dropbox đang chạy. Nó cũng có thể là một nỗi đau để giải quyết xung đột nếu 2 khách hàng khác nhau đăng ký các phiên bản khác nhau vào container. Vì vậy, nó chỉ thực tế đối với một người sử dụng nó để sao lưu chứ không phải cho một nhóm.
Thiết lập:
preserve modification timestamp
*.Sử dụng:
PS Bỏ chọn preserve modification timestamp
hộp thư thông báo rằng tệp đã được sửa đổi và tệp sẽ được đồng bộ hóa. Lưu ý rằng việc gắn bộ chứa sẽ sửa đổi dấu thời gian ngay cả khi bạn không thay đổi bất kỳ tệp nào trong đó. Nếu bạn không muốn điều đó xảy ra, chỉ cần gắn âm lượng làread-only
Tôi thích câu trả lời của Dan McNevin! Bây giờ tôi cũng đang sử dụng Git và Dropbox và tôi đang sử dụng một số bí danh trong .bash_profile để quy trình làm việc của tôi giống như sau:
~/project $ git init
~/project $ git add .
~/project $ gcam "first commit"
~/project $ git-dropbox
Đây là những bí danh của tôi:
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'
Chúng tôi sử dụng phương pháp này (tạo một kho lưu trữ trần trong Dropbox) trên thư mục chia sẻ .
Một nhóm nhỏ các nhà phát triển có thể lấy từ kho lưu trữ được đồng bộ hóa trần đó và tạo một bản sao cục bộ. Sau khi đơn vị công việc được thực hiện, chúng tôi đẩy trở lại nguồn gốc.
Một điều tôi thiếu là một cách tốt để gửi e-mail với thông tin được đặt thay đổi sau khi xảy ra việc đẩy nguồn gốc. Chúng tôi đang sử dụng Google Wave để theo dõi các thay đổi theo cách thủ công.
Tôi đã sử dụng Mercurial theo cách được khuyến nghị và khuyến cáo rằng bạn nên thận trọng, đặc biệt nếu có bất kỳ máy nào khác nhau. Các fora Dropbox có đầy đủ các khiếu nại về các vấn đề trường hợp tên tập tin bí ẩn xuất hiện tự phát. Hg (và tôi đoán Git) sẽ không thông báo hoặc khiếu nại trong các lần kiểm tra định kỳ và bạn sẽ chỉ nghe về tham nhũng khi nó phàn nàn về một repo tham nhũng khi bạn cố gắng sử dụng nó thực sự. Tin xấu. Ước gì tôi có thể cụ thể hơn về vấn đề và cách giải quyết của nó; Tôi vẫn đang cố gắng tự đào ra khỏi mớ hỗn độn này.
Ngoài ra còn có một dự án nguồn mở (một tập hợp các tập lệnh đa nền tảng [Linux, Mac, Win]) thực hiện tất cả các chi tiết khó hiểu về quản lý kho lưu trữ với một số lệnh (3-4).
https://github.com/karalabe/gitbox/wiki
Sử dụng mẫu là:
$ gitbox create myapp
Creating empty repository...
Initializing new repository...
Repository successfully created.
$ gitbox clone myapp
Cloning repository...
Repository successfully cloned.
Sau đó sử dụng git bình thường:
$ echo “Some change” > somefile.txt
$ git add somefile.txt
$ git commit –m “Created some file”
$ git push
Kiểm tra wiki dự án và các hướng dẫn để tham khảo và hướng dẫn lệnh đầy đủ.
Tôi lưu trữ repo không phải Github của tôi trên Dropbox. Một cảnh báo tôi gặp phải là đồng bộ hóa sau khi cài đặt lại. Dropbox sẽ tải xuống các tệp nhỏ nhất trước khi chuyển sang các tệp lớn hơn. Không thành vấn đề nếu bạn bắt đầu vào ban đêm và quay lại sau cuối tuần :-)
Chủ đề của tôi - http://forums.dropbox.com/topic.php?id=29984&replies=6
Bây giờ vào năm 2014, tôi đã sử dụng Git và Dropbox trong khoảng một năm rưỡi mà không gặp vấn đề gì. Một số điểm mặc dù:
git push
đẩy đến một kho lưu trữ từ xa, để nếu nó bị hỏng, tôi có thể dễ dàng khôi phục nó.C:\Users
với mklink /D link target
vì một số thư viện đã được chỉ đến các địa điểm tuyệt đối.Tôi thích câu trả lời được bình chọn hàng đầu của Dan McNevin. Cuối cùng tôi đã thực hiện chuỗi lệnh git quá nhiều lần và quyết định tạo một kịch bản. Vì vậy, đây là:
#!/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}"
Kịch bản chỉ yêu cầu một tên dự án. Nó sẽ tạo ra một kho lưu trữ git trong ~/Dropbox/git/
tên được chỉ định và sẽ đẩy toàn bộ nội dung của thư mục hiện tại đến nhánh gốc gốc mới được tạo. Nếu có nhiều tên dự án được đưa ra, đối số tên dự án bên phải nhất sẽ được sử dụng.
Tùy chọn, đối số lệnh -r chỉ định nhánh từ xa sẽ đẩy đến bản gốc. Vị trí của chủ gốc dự án cũng có thể được chỉ định với đối số -m. Một tập tin .gitignore mặc định cũng được đặt trong thư mục nhánh từ xa. Mặc định thư mục và tệp .gitignore được chỉ định trong tập lệnh.
Cách tiếp cận khác:
Tất cả các câu trả lời cho đến nay, bao gồm câu trả lời @Dan phổ biến nhất, giải quyết ý tưởng sử dụng Dropbox để tập trung vào kho lưu trữ được chia sẻ thay vì sử dụng dịch vụ tập trung vào git như github, bitbucket, v.v.
Nhưng, vì câu hỏi ban đầu không chỉ định sử dụng "Git và Dropbox cùng nhau một cách hiệu quả" thực sự có nghĩa là gì, chúng ta hãy làm việc theo một cách tiếp cận khác: "Sử dụng Dropbox để chỉ đồng bộ hóa bàn làm việc".
Cách thực hiện có các bước sau:
Trong thư mục dự án, người ta tạo một .git
thư mục trống (ví dụ mkdir -p myproject/.git
)
hủy đồng bộ .git
thư mục trong Dropbox. Nếu sử dụng Ứng dụng Dropbox: đi tới Tùy chọn, Đồng bộ hóa và "chọn thư mục để đồng bộ hóa", trong đó .git
thư mục cần được đánh dấu. Điều này sẽ loại bỏ các .git
thư mục.
chạy git init
trong thư mục dự án
Nó cũng hoạt động nếu .git
đã tồn tại, sau đó chỉ thực hiện bước 2. Dropbox sẽ giữ một bản sao của các tệp git trong trang web.
Bước 2 sẽ khiến Dropbox không đồng bộ cấu trúc hệ thống git, đây là kết quả mong muốn cho phương pháp này.
Tại sao người ta sẽ sử dụng phương pháp này?
Các thay đổi chưa được đẩy sẽ có bản sao lưu Dropbox và chúng sẽ được đồng bộ hóa trên các thiết bị.
Trong trường hợp Dropbox bắt vít một cái gì đó khi đồng bộ hóa giữa các thiết bị git status
và git diff
sẽ thuận tiện để sắp xếp mọi thứ.
Nó tiết kiệm không gian trong tài khoản Dropbox (toàn bộ lịch sử sẽ không được lưu trữ ở đó)
Nó tránh các mối quan tâm của @dubek và @Ates trong các nhận xét về câu trả lời của @ Dan và các mối quan tâm của @clu trong một câu trả lời khác .
Sự tồn tại của một điều khiển từ xa ở một nơi khác (github, v.v.) sẽ hoạt động tốt với phương pháp này.
Làm việc trên các ngành khác nhau mang lại một số vấn đề, cần được quan tâm:
Một vấn đề tiềm ẩn là có Dropbox (không cần thiết?) Đồng bộ hóa nhiều tệp có khả năng khi kiểm tra các nhánh khác nhau.
Nếu hai hoặc nhiều thiết bị được đồng bộ hóa Dropbox có các nhánh khác nhau được kiểm tra, các thay đổi không được cam kết cho cả hai thiết bị có thể bị mất,
Một cách xung quanh những vấn đề này là sử dụng git worktree
để giữ kiểm tra chi nhánh trong các thư mục riêng biệt.
xattr -w com.dropbox.ignored 1 /path/to/somewhere
.
Đối với Dropbox 2 xu của tôi, chỉ có ý nghĩa cho việc sử dụng cá nhân mà bạn không muốn làm phiền một máy chủ repo trung tâm. Đối với bất kỳ sự phát triển chuyên nghiệp nào, có thể bạn sẽ tạo ra nhiều vấn đề hơn bạn sẽ giải quyết, như đã được đề cập nhiều lần trong chuỗi, Dropbox không được thiết kế cho trường hợp sử dụng này. Điều đó nói rằng, một phương pháp hoàn toàn an toàn để kết xuất kho lưu trữ trên Dropbox mà không cần bất kỳ plugin hoặc công cụ của bên thứ ba nào là sử dụng các gói. Tôi có các bí danh sau đây .gitconfig
để lưu gõ:
[alias]
bundle-push = "!cd \"${GIT_PREFIX:-.}\" && if path=\"$(git config remote.\"$1\".url)\" && [ \"${path:0:1}\" = / ]; then git bundle create \"$path\" --all && git fetch \"$1\"; else echo \"Not a bundle remote\"; exit 1; fi #"
bundle-fetch = "!cd \"${GIT_PREFIX:-.}\" && if path=\"$(git config remote.\"$1\".url)\" && [ \"${path:0:1}\" = / ]; then git bundle verify \"$path\" && git fetch \"$1\"; else echo \"Not a bundle remote\"; exit 1; fi #"
bundle-new = "!cd \"${GIT_PREFIX:-.}\" && if [ -z \"${1:-}\" -o -z \"${2:-}\" ]; then echo \"Usage: git bundle-new <file> <remote name>\"; exit 1; elif [ -e \"$2\" ]; then echo \"File exist\"; exit 1; else git bundle create \"$2\" --all && git remote add -f \"$1\" \"$(realpath \"$2\")\"; fi #"
Thí dụ:
# Create bundle remote (in local repo)
$ git bundle-new dropbox ~/Dropbox/my-repo.bundle
# Fetch updates from dropbox
$ git bundle-fetch dropbox
# NOTE: writes over previous bundle. Thus, roughly equivalent to push --force --prune --all
$ git bundle-push
Tôi đã phải đối mặt với một vấn đề tương tự và đã tạo ra một kịch bản nhỏ cho cùng. Ý tưởng là sử dụng Dropbox với Git một cách đơn giản nhất có thể. Hiện tại, tôi đã nhanh chóng triển khai mã Ruby và tôi sẽ sớm bổ sung thêm.
Kịch bản có thể truy cập tại https://github.com/nuttylabs/box-git
.
Không sử dụng các công cụ tích hợp của bên thứ ba, tôi có thể cải thiện điều kiện một chút và sử dụng DropBox và các dịch vụ đĩa đám mây tương tự khác như SpiderOak với Git.
Mục đích là để tránh sự đồng bộ hóa ở giữa các sửa đổi tệp này, vì nó có thể tải lên một trạng thái một phần và sau đó sẽ tải xuống lại, làm hỏng hoàn toàn trạng thái git của bạn.
Để tránh vấn đề này, tôi đã làm:
git bundle create my_repo.git --all
.Nó không hoàn hảo vì không có gì đảm bảo nó sẽ không làm rối loạn trạng thái git một lần nữa, nhưng nó giúp ích và hiện tại tôi không gặp phải vấn đề gì.
Trên MacOS, bạn cũng có thể chỉ dừng Dropbox, thực hiện các thay đổi và sau đó khởi chạy lại Dropbox. Tôi đang sử dụng kết hợp sau đây và tôi khá hài lòng với nó:
Trong cả hai (thư mục dự án được quản lý git cục bộ của bạn và kho lưu trữ git từ xa của bạn nằm trên Dropbox) chạy lệnh sau để tắt tự động đóng gói (đây là vấn đề chính với đồng bộ hóa dropbox)
git config --global gc.auto 0
Thỉnh thoảng, nén các kho lưu trữ với dropbox bị vô hiệu hóa. Ví dụ: tôi thực hiện các thao tác sau trong tập lệnh bash-build-script của mình bất cứ khi nào tôi phát hành các ứng dụng mới.
osascript -e "tell application \"Dropbox\" to quit"
# Compress local
git gc --prune=now; git repack -a -d
# Compress remote
REPOS_DIR_REMOTE=`git remote get-url --push origin`
cd "${REPOS_DIR_REMOTE}"
git gc --prune=now; git repack -a -d
osascript -e "tell application \"Dropbox\" to launch"
osascript -e "display notification with title \"Compress Done\""