prosource

Git과 Dropbox를 함께 사용하는 방법은?

probook 2023. 4. 23. 10:34
반응형

Git과 Dropbox를 함께 사용하는 방법은?

Git과 Dropbox를 함께 사용할 수 있습니까?

저는 Git on Dropbox가 좋다고 생각합니다.항상 쓰고 있어요.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 작업을 수행합니다.이것들은 자동으로 다른 모든 기계와 동기화됩니다.

저는 블로그에 "버전 관리에 대하여"라는 글을 올렸습니다.그 글에서는 환경 설정의 이유를 다루고 있습니다.Ruby on Rails 개발 경험을 바탕으로 한 것이지만, 실제로 모든 것에 적용할 수 있습니다.

올바른 방법은 git-remote-dropbox(https://github.com/anishathalye/git-remote-dropbox를 사용하는 것입니다.

Dropbox에서 자신의 베어 레포 작성은 많은 문제를 일으킵니다.Anish(라이브러리 작성자)가 가장설명합니다.

이러한 문제의 근본 원인은 Dropbox 데스크톱 클라이언트가 Git 저장소가 아닌 파일을 동기화하도록 설계되었기 때문입니다.Git 저장소를 특별히 취급하지 않으면 Git과 동일한 보증을 유지할 수 없습니다.리모트 저장소에서의 조작은 더 이상 원자적이지 않습니다.동시 조작이나 동기 타이밍이 나쁘면 저장소가 파손될 수 있습니다.

기존의 Git 리모컨은 서버 측에서 코드를 실행하여 정상적으로 동작하지만, 우리는 그렇게 할 수 없습니다.

솔루션:이것을 적절히 해결할 수 있다.Git을 Dropbox와 함께 사용할 수 있어 여러 사용자가 동시에 조작하는 경우에도 기존 Git 리모컨과 동일한 안전성과 일관성을 보장할 수 있습니다!

사용자에게는 Git-remote-dropbox를 사용하는 것만큼이나 간단합니다. Git-remote-dropbox는 Git과 Dropbox 사이의 투명한 양방향 브리지 역할을 하며 기존 Git 리모컨의 모든 보증을 유지합니다.공유 폴더와 함께 사용해도 안전하기 때문에 공동 작업에 사용할 수 있습니다(협력자가 무제한인 무제한 개인 저장소!).

리모트 헬퍼를 사용하면 Dropbox를 Git 리모트로 사용하여 Git 클론, Git 풀, Git 푸시 등 일반 Git 명령어를 계속 사용할 수 있으며, 모든 것이 예상대로 작동합니다.

이 답변은 Git이 아닌 Mercurial 경험에 근거한 것입니다만, 이 경험에 의하면, Dropbox 를 사용하는 것은, 같은 Dropbox 베이스의 저장소를 다양한 때에 갱신할 가능성이 있는 경우(Mac, Unix, Windows 의 경우)에 파손된 저장소를 요구하고 있습니다.

잘못될 수 있는 것들에 대한 완전한 목록은 없지만, 여기 저를 괴롭힌 구체적인 예가 있습니다.각 머신에는 줄 바꿈 문자 및 파일 이름에서 대/소문자 처리 방법에 대한 고유한 개념이 있습니다.Dropbox와 Git/Mercurial은 약간 다르게 취급합니다(정확한 차이는 기억나지 않습니다).Dropbox가 Git/Mercurial의 등 뒤에 있는 저장소를 업데이트 할 경우, 사전에 손상된 저장소입니다.이는 즉시 눈에 띄지 않게 발생하므로 저장소에서 복구하기 전에는 저장소가 고장났는지도 알 수 없습니다.

이렇게 해서 한 가지 난장판을 파낸 후, 저는 다음과 같은 레시피를 사용하여 큰 성공을 거두고 있고, 문제될 기미가 없습니다.저장소를 Dropbox 밖으로 이동하기만 하면 됩니다.문서, JAR 파일 등 원하는 모든 것에 Dropbox를 사용합니다.또한 GitHub(Git) 또는 Bitbucket(Mercurial)을 사용하여 저장소 자체를 관리합니다.둘 다 무료이기 때문에 이로 인해 비용이 증가하지 않으며, 이제 각 툴이 그 강점을 발휘합니다.

Dropbox 위에서 Git/Mercurial을 실행하면 위험 요소만 추가됩니다.하지 마세요.

모든 프로젝트를 하나의 Git 저장소에 넣고 싶지도 않고 프로젝트마다 이 코드를 실행하고 싶지도 않았기 때문에 프로세스를 자동화하는 Bash 스크립트를 만들었습니다.1개 또는 복수의 디렉토리에서 사용할 수 있습니다.이것에 의해, 이 투고에 기재되어 있는 코드에 대응하거나, 동시에 복수의 프로젝트에 대응하거나 할 수 있습니다.

#!/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

Dropbox를 사용하는 소규모 팀에 대해서는:

각 개발자가 다른 개발자에게만 제공되는 쓰기 가능한 베어 저장소를 Dropbox에 가지고 있으면 코드 공유가 쉬워지고 손상 위험이 없습니다.

중앙 집중식 '메인라인'을 원하는 경우, 한 명의 개발자가 자신의 리포에서 모든 푸시를 관리하도록 할 수 있습니다.

현재는 2015년이며, 3일 전 현재 Dropbox API v2 기반새로운 툴이 생성되어 안전하게 Git on Dropbox를 사용할 수 있게 되었습니다.데스크톱 클라이언트를 사용하지 않고 API를 기반으로 작동하며 공유 폴더에 호스트된 저장소에 대한 여러 동시 푸시를 올바르게 처리합니다.

일단 구성되면 다른 git 리모트처럼 git 리모트를 설정할 수 있습니다.

git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"

Git과 Dropbox를 사용하는 것은 좋은 방법이 아니라고 생각합니다.이 두 가지 기능에 대해 생각해 보십시오.

Git:

  • 중앙 저장소를 보유할 수 있습니다.
  • 독자적인 변경으로 독자적인 저장소를 보유할 수 있습니다.
  • 중앙 저장소에서 변경 내용을 보내고 받을 수 있습니다.
  • 여러 사용자가 동일한 파일을 변경할 수 있도록 허용하고 파일을 병합하거나 병합할 수 없는 경우 병합을 요청합니다.
  • 중앙 저장소에 액세스할 수 있는 웹 클라이언트 및 데스크톱 클라이언트 보유

드롭 박스:

  • 모든 데이터를 중앙 저장소에 보관
  • 서버에 독자적인 버전의 파일을 보존할 수 있습니다.
  • 중앙 저장소에서 변경 내용을 보내고 받도록 강제합니다.
  • 여러 사람이 같은 파일을 변경할 경우 처음 커밋된 파일이 나중에 커밋된 파일로 대체되며 문제가 되는 병합은 발생하지 않습니다(또한 가장 큰 단점임).
  • 중앙 저장소에 대한 액세스를 허용하는 웹 및 데스크톱 클라이언트를 가집니다.

또한 일부 파일을 공유하는 것이 걱정된다면 암호화하는 것이 어떨까요?그러면 Dropbox에서 Git에 대한 가장 큰 이점을 얻을 수 있습니다. 즉, 공용 및 개인 파일을 가질 수 있습니다.

암호화원격 백업에는 Mercurial(또는 Git) + TrueCrypt + Dropbox를 사용합니다.

가장 멋진 점은 코드 일부를 수정하면 Dropbox가 TrueCrypt 컨테이너 전체를 동기화하지 않는다는 것입니다.동기화 시간은 변경량에 거의 비례합니다.암호화되어 있어도 TrueCrypt + Dropbox 조합으로 블록 암호 + 블록 레벨 동기화가 매우 잘 됩니다.

둘째, 모노리식 암호화 컨테이너는 보안을 강화할 뿐만 아니라 저장소 손상 가능성도 줄입니다.

주의:그러나 Dropbox 실행 중에는 컨테이너가 마운트되지 않도록 매우 주의해야 합니다.또, 2개의 다른 클라이언트가 다른 버전을 컨테이너에 체크인 하는 경우, 경합을 해결하는 것도 귀찮을 수 있습니다.따라서 백업에 사용하는 사람은 한 명뿐이며 팀에는 사용할 수 없습니다.

셋업:

  • TrueCrypt 컨테이너를 만듭니다(여러 기가바이트가 좋습니다).
  • [ ]그래서 [Truecrypt]를 끄겠습니다preserve modification timestamp*.
  • 위의 Dan(https://stackoverflow.com/a/1961515/781695)에 기재된 레포 작성

사용방법:

  • 드롭박스 종료
  • 컨테이너 마운트, 변경 사항 푸시, 마운트 해제
  • 실행 드롭다운 상자

P.S. 을 취소하다preserve modification timestamp파일이 변경되어 sync'd가 되어야 함을 드롭박스에 알립니다.컨테이너를 마운트하면 컨테이너 내의 파일을 변경하지 않아도 타임스탬프가 변경됩니다. 않은 는 볼륨을 「」로 해 .read-only

공유 폴더에 이 메서드(Dropbox에 빈 저장소 생성)를 사용합니다.

소수의 개발자 그룹이 맨 동기 저장소에서 가져와 로컬 클론을 생성할 수 있습니다.작업 단위가 완료되면 원점으로 되돌립니다.

한 가지 부족한 점은 발신기지 푸시 발생 시 변경 설정 정보가 포함된 이메일을 보내는 좋은 방법입니다.Google Wave를 사용하여 수동으로 변경 사항을 추적하고 있습니다.

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'

저는 Mercurial을 권장하는 방식으로 사용하고 있으며, 특히 기계들 중 하나라도 다를 경우 주의하시기 바랍니다.Dropbox fora는 자연스럽게 나타나는 알 수 없는 파일 이름 문제들로 가득합니다.Hg(그리고 Git)는 일상적인 체크인 중에 알아차리거나 불평하지 않으며, 실제로 사용하려고 할 때 손상된 리포가 있다고 불평할 때만 부패에 대해 듣게 될 것입니다.나쁜 소식이에요.그 문제와 그 해결책에 대해 좀 더 구체적으로 말할 수 있었으면 좋겠다. 나는 아직도 이 난장판으로부터 벗어나려고 노력하고 있다.

또한 오픈 소스 프로젝트(크로스 플랫폼 [Linux, Mac, Win]스크립트 모음)도 있습니다.이 프로젝트에서는 저장소 관리의 기본적인 세부 사항을 몇 가지(3-4개)의 명령어로 수행합니다.

https://github.com/karalabe/gitbox/wiki

사용 예:

$ gitbox create myapp
Creating empty repository...
Initializing new repository...
Repository successfully created.

$ gitbox clone myapp
Cloning repository...
Repository successfully cloned.

그 후 일반 git 사용:

$ echo “Some change” > somefile.txt
$ git add somefile.txt
$ git commit –m “Created some file”
$ git push

자세한 명령어 레퍼런스 및 튜토리얼은 프로젝트 Wiki 및 매뉴얼을 참조하십시오.

내 비 Github repo를 Dropbox에 저장합니다.재인스톨 후에 동기화하는 주의사항이 있습니다.Dropbox는 가장 작은 파일을 먼저 다운로드한 후 큰 파일로 이동합니다.밤에 시작해서 주말 이후에 돌아오면 문제 없습니다 :-)

내 스레드 - http://forums.dropbox.com/topic.php?id=29984&replies=6

2014년부터 Git과 Dropbox를 1년 반 정도 사용하고 있습니다.단, 몇 가지 포인트는 다음과 같습니다.

  • Dropbox를 사용하는 모든 머신은 Windows에서 다른 버전(7~8)+1 mac입니다.
  • 다른 사람과 저장소를 공유하지 않기 때문에 나만 수정할 수 있습니다.
  • git push리모트 저장소에 푸시하기 때문에 파손된 경우에도 쉽게 복구할 수 있습니다.
  • .C:\Usersmklink /D link target왜냐하면 일부 도서관은 절대적인 위치를 가리키고 있었기 때문이다.

또 다른 접근법:

가장 인기 있는 @Dan answer를 포함한 지금까지의 모든 답변은 git, bitbucket 등 git에 초점을 맞춘 서비스를 사용하지 않고 Dropbox를 사용하여 공유 저장소를 일원화하는 아이디어를 다루고 있습니다.

다만, 원래의 질문에서는 「Git and Dropbox with effective together」의 의미를 특정하고 있지 않기 때문에, 「Dropbox를 사용해 워크 트리만을 동기시킨다」라고 하는 또 다른 어프로치에 대해 설명하겠습니다.

사용방법에는 다음 단계가 있습니다.

  1. 에 빈 「」을 합니다..git "Directory"(디렉토리:mkdir -p myproject/.git)

  2. .git디렉토리로 이동합니다.앱을 하는 경우: [],서 "동기화할 폴더 선택"은 다음과 같습니다..git디렉토리는 마킹 해제해야 합니다. 하면 " " " 가 삭제됩니다..git디렉토리로 이동합니다.

  3. 려려를 git init

, ,, 능, 능, 능, it, it, it, it, it, it,.git2년 전드롭박스 git 。

스텝 2는 Dropbox가 git 시스템 구조를 동기화하지 않도록 합니다.이것은 이 접근방식의 바람직한 결과입니다.

왜 이런 방식을 사용하는가?

  • 아직 푸시되지 않은 변경에는 Dropbox 백업이 있으며 디바이스 간에 동기화됩니다.

  • Dropbox가 간에 때, Dropbox는 다음과 같이 .git status ★★★★★★★★★★★★★★★★★」git diff정리하는 데 도움이 될 거야

  • Dropbox 계정의 공간을 절약합니다(전체 이력은 여기에 저장되지 않습니다).

  • @dubek와 @Ates가 @Dan의 답변에 대해 코멘트에서 제기하는 우려와 @clu가 다른 답변에서 제기하는 우려를 회피한다.

이 접근방식에서는 리모트(github 등)가 다른 장소에 존재해도 문제가 없습니다.

서로 다른 지점에서 작업하면 다음과 같은 몇 가지 문제가 발생하며 이에 대처해야 합니다.

  • 잠재적인 문제 중 하나는 다른 지점을 체크아웃할 때 Dropbox(불필요하게?)가 많은 파일을 동기화하는 것입니다.

  • 2대 이상의 Dropbox 동기 디바이스가 다른 브런치를 체크 아웃 하고 있는 경우, 양쪽 디바이스에 커밋되지 않은 변경은 없어질 수 있습니다.

이러한 문제를 회피하는 한 가지 방법은 를 사용하여 지점 체크아웃을 개별 디렉토리에 유지하는 것입니다.

나는 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/지정된 이름으로 현재 디렉토리의 전체 내용을 새로 만든 오리진 마스터 브랜치에 푸시합니다.프로젝트 이름을 두 개 이상 지정하면 가장 오른쪽의 프로젝트 이름 인수가 사용됩니다.

임의로 -r 명령 인수는 오리진마스터에 푸시할 리모트브런치를 지정합니다.프로젝트 오리진 마스터의 위치는 -m 인수로 지정할 수도 있습니다.기본 .gitignore 파일은 원격 지점 디렉토리에도 배치됩니다.디렉토리와 .gitignore 파일의 기본값은 스크립트로 지정되어 있습니다.

2 2 box Dropbox 【드롭박스】 중앙 레포 호스트를 구하지 않아도 됩니다.Dropbox는 이미 스레드에서 여러 번 언급했듯이 전문적인 개발을 위해 해결할 수 있는 문제보다 더 많은 문제를 야기할 수 있습니다.하지 않고 를 덤프하는 번들을 입니다...gitconfig력을저 저장: :

[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 #"

예:

# 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

저는 비슷한 문제에 직면했고 같은 문제를 위한 작은 대본을 만들었습니다.가능한 한 간단하게 Git과 함께 Dropbox를 사용하는 것이 목적입니다.현재 Ruby code를 빠르게 구현하고 있으며, 곧 추가하겠습니다.

은 이음음음음음음음음음음음음음음 the the the the the the the the the the the the the the the the the the.https://github.com/nuttylabs/box-git.

서드파티 통합툴을 사용하지 않고 조금 더 상태를 개선하고 DropBox 및 Git을 사용한 SpiderOak과 같은 유사한 클라우드 디스크 서비스를 사용할 수 있었습니다.

파일 수정의 도중에 동기화하는 것을 피하는 것이 목표입니다.이는 부분적인 상태를 업로드하고 다시 다운로드하여 git 상태를 완전히 손상시킬 수 있기 때문입니다.

이 문제를 피하기 위해 다음과 같이 했습니다.

  1. 를 사용하여 로 번들합니다.git bundle create my_repo.git --all.
  2. 파일 모니터링의 지연을 설정합니다(예: 즉시가 아닌 5분).따라서 변경 중에 DropBox가 부분 상태를 동기화할 가능성이 줄어듭니다.또한 클라우드 디스크의 파일을 즉시 수정할 때(예: 메모 앱 즉시 저장)에도 큰 도움이 됩니다.

git 상태를 다시 망치지 않는다는 보장은 없기 때문에 완벽하지는 않지만 도움이 되고 지금은 문제가 없습니다.

MacOS에서는 Dropbox를 중지하고 변경한 다음 Dropbox를 다시 시작할 수도 있습니다.저는 다음과 같은 조합을 사용하고 있으며, 매우 만족하고 있습니다.

(로컬 git 관리 프로젝트 디렉토리와 Dropbox에 있는 리모트 git 저장소) 둘 다 자동 패킹을 비활성화하기 위해 다음 명령을 실행합니다(드롭박스 동기화의 주요 문제임).

git config --global gc.auto 0

그런 다음 드롭박스가 비활성화되어 있는 리포지토리를 압축합니다.예를 들어 앱의 새 릴리스를 만들 때마다 bash-build-script에서 다음을 수행합니다.

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\""

언급URL : https://stackoverflow.com/questions/1960799/how-to-use-git-and-dropbox-together

반응형