سؤال

كيف أستخدم شخص سخيف و بصندوق الإسقاط معا بفعالية؟

هل كانت مفيدة؟

المحلول

أعتقد أن GIT على 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 العادية وسيتم مزامنتها مع جميع آلاتك الأخرى تلقائيًا.

كتبت منشور مدونة ، على التحكم في الإصدار, (الرابط القديم في ذمة الله تعالى) على منطقي وكيف أقوم بإعداد بيئتي ، فهي تعتمد على بلدي روبي على القضبان تجربة التنمية ، ولكن يمكن تطبيقها على أي شيء ، حقا.

نصائح أخرى

الطريقة الصحيحة للقيام بذلك هي استخدام Git-Remote-Dropbox: https://github.com/anishathalee/git-remote-dropbox

يؤدي إنشاء repo الخاص بك في Dropbox إلى الكثير من المشاكل. أنيش (خالق المكتبة) يشرح ذلك بشكل أفضل:

السبب الجذري لهذه المشكلات هو أن عميل سطح المكتب Dropbox مصمم لمزامنة الملفات ، وليس مستودعات GIT. بدون معالجة خاصة لمستودعات GIT ، فإنه لا يحافظ على نفس الضمانات مثل GIT. لم تعد العمليات على المستودع البعيد ذريًا ، ويمكن أن تؤدي العمليات المتزامنة أو التوقيت غير المحظوظ مع التزامن إلى مستودع تالف.

تقوم أجهزة التحكم عن بعد التقليدية GIT بتشغيل رمز على جانب الخادم لجعل هذا العمل بشكل صحيح ، لكن لا يمكننا فعل ذلك.

الحل: من الممكن حل هذا بشكل صحيح. من الممكن استخدام GIT مع Dropbox ولديه نفس ضمانات السلامة والاتساق باعتباره جهاز التحكم عن بُعد تقليدي ، حتى عندما يكون هناك العديد من المستخدمين والعمليات المتزامنة!

بالنسبة للمستخدم ، يكون الأمر بسيطًا مثل استخدام Git-Remote-Dropbox ، وهو مساعد عن بعد GIT يعمل كجسر ثنائي الاتجاه شفاف بين GIT و Dropbox ويحافظ على جميع ضمانات جهاز التحكم عن بعد التقليدي. إنه أمر آمن للاستخدام مع المجلدات المشتركة ، بحيث يمكن استخدامه للتعاون (Yay Unlimited Private Repos مع متعاونين غير محدودين!).

مع المساعد البعيد ، من الممكن استخدام Dropbox كجهاز تحكم عن بعد GIT ومواصلة استخدام جميع أوامر GIT العادية مثل Git Clone و Git Pull و Git Push ، وسيعمل كل شيء كما هو متوقع.

تستند هذه الإجابة على زئبقي التجربة ، وليس GIT ، ولكن هذه التجربة تقول أن استخدام Dropbox بهذه الطريقة يطلب مستودعات فاسدة إذا كانت هناك فرصة لكونك تقوم بتحديث مستودع قائم على Dropbox نفسه من أجهزة مختلفة في أوقات مختلفة (Mac ، Unix ، Windows في حالتي ).

ليس لدي قائمة كاملة بالأشياء التي يمكن أن تسوء ، ولكن إليك مثال محدد لي. كل جهاز له مفهومه الخاص عن الأحرف التي تنتهي الخطوط وكيفية معالجة أحرف العلوية/السفلية في أسماء الملفات. Dropbox و Git/Mercurial يتعاملان مع هذا بشكل مختلف قليلاً (لا أتذكر الاختلافات الدقيقة). إذا قام Dropbox بتحديث المستودع خلف GIT/Mercurial's Back ، Presto ، Broken Broken. يحدث هذا على الفور وبشكل غير مرئي ، لذلك لا تعرف حتى أن مستودعك قد كسر حتى تحاول استعادة شيء منه.

بعد البحث عن فوضى واحدة في فعل الأشياء بهذه الطريقة ، كنت أستخدم الوصفة التالية مع نجاح كبير وعدم وجود علامة على المشكلات. ما عليك سوى نقل المستودع الخاص بك من Dropbox. استخدم Dropbox لكل شيء آخر ؛ توثيق، ملفات جرة, ، أي شيء من فضلك. والاستخدام جيثب (git) أو Bitbucket (الزئبق) لإدارة المستودع نفسه. كلاهما مجاني ، لذلك لا يضيف هذا شيئًا إلى التكاليف ، وكل أداة تلعب الآن على نقاط قوتها.

تشغيل GIT/Mercurial أعلى Dropbox لا يضيف أي شيء باستثناء المخاطر. لا تفعل ذلك.

فيما يتعلق بالفرق الصغيرة باستخدام Dropbox:

إذا كان لكل مطور مستودع عاري قابل للكتابة على Dropbox ، وهو سحب فقط للمطورين الآخرين ، ثم يسهل مشاركة الكود دون خطر الفساد!

ثم إذا كنت تريد "خط رئيسي" مركزي ، فيمكنك أن يكون لديك مطور واحد يدير كل الدفعات من ريبو.

لم أكن أرغب في وضع جميع مشاريعي تحت مستودع GIT واحد ، كما أنني لم أرغب في الدخول وتشغيل هذا الرمز لكل مشروع ، لذلك صنعت ملف سحق البرنامج النصي الذي سيؤدي أتمتة العملية. يمكنك استخدامه على أدلة واحدة أو متعددة - حتى يتمكن من القيام بالرمز في هذا المنشور لك أو يمكنه القيام بذلك في مشاريع متعددة مرة واحدة.

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

لا أعتقد أن استخدام Git و Dropbox هو الطريق للذهاب ... فقط فكر في ميزات الاثنين:

شخص سخيف:

  • يتيح لك الحصول على مستودع مركزي
  • يتيح لك الحصول على مستودعك الخاص مع التغييرات الخاصة بك
  • يتيح لك إرسال وتلقي التغييرات من المستودع المركزي
  • يسمح لأشخاص متعددين بتغيير نفس الملفات ودمجها أو يطلب منك دمجها إذا لم تتمكن من فعل ذلك
  • لديه عملاء على شبكة الإنترنت وسطح المكتب للسماح بالوصول إلى المستودع المركزي

بصندوق الإسقاط:

  • يحافظ على كل شيء في مستودع مركزي
  • يتيح لك الحصول على إصداراتك الخاصة من الملفات في الخادم
  • يجبرك على إرسال وتلقي تغييرات من المستودع المركزي
  • إذا قام العديد من الأشخاص بتغيير نفس الملفات ، يتم استبدال الملف الأول الذي تم ارتكابه بالالتزامات اللاحقة ، ولم يحدث أي دمج مزعجًا (وبالتأكيد أكبر عيب له)
  • لديه عملاء على شبكة الإنترنت وسطح المكتب للسماح بالوصول إلى المستودع المركزي.

وإذا كنت قلقًا من مشاركة بعض ملفاتك ، فلماذا لا تشفرهم؟ وبعد ذلك ، يمكنك الحصول على أكبر ميزة من Dropbox إلى git ، أي أن يكون لديك ملفات عامة وخاصة ...

إنه الآن عام 2015 ، وذلك منذ ثلاثة أيام ، أ أداة جديدة مرتكز على Dropbox API V2 تم إنشاؤه لاستخدام GIT بأمان على Dropbox. إنه يعمل ضد API بدلاً من استخدام عميل سطح المكتب ، ويتعامل بشكل صحيح مع دفعات متعددة في وقت واحد إلى مستودع مستضاف في مجلد مشترك.

بمجرد تكوينه ، يسمح لأحد بإعداد جهاز تحكم عن بعد GIT تمامًا مثل أي جهاز تحكم عن بعد آخر.

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

أستخدم mercurial (أو git) + truecrypt + dropbox مشفرة التحكم عن بعد النسخ الاحتياطية.

أروع شيء هو أن Dropbox لا يزامن حاوية truecrypt بأكملها إذا قمت بتعديل جزء صغير من الكود الخاص بك. يتناسب وقت المزامنة تقريبًا مع مقدار التغييرات. على الرغم من تشفيرها ، فإن مزيج TrueCrypt + Dropbox يجعل استخدامًا ممتازًا من مزامنة مستوى الكتفين + كتلة.

ثانياً ، حاوية مشفرة متجانسة لا تضيف الأمان فحسب ، بل تقلل أيضًا من فرص المستودع فساد .

الحذر: ومع ذلك ، يجب أن تكون حريصًا جدًا على عدم تثبيت الحاوية أثناء تشغيل Dropbox. يمكن أن يكون أيضًا ألمًا لحل النزاعات إذا كان هناك اثنين من العملاء المختلفين تسجيل وصولًا إلى الحاوية. لذلك ، إنه عملي فقط لشخص واحد يستخدمه للنسخ الاحتياطية ، وليس لفريق.

نصب:

  • قم بإنشاء حاوية truecrypt (Gigabyte متعددة على ما يرام)
  • تحت تفضيلات trueCrypt ، قم بإلغاء تحديد preserve modification timestamp*.
  • إنشاء ريبو كما ذكر أعلاه من قبل دان ( https://stackoverflow.com/a/1961515/781695 )

الاستخدام:

  • Quit Dropbox
  • قم بتركيب الحاوية ، وادفع التغييرات الخاصة بك ، و unmount
  • تشغيل Dropbox

PS Unchecking preserve modification timestamp يخبر Dropbox أنه تم تعديل الملف ويجب مزامنته. لاحظ أن تركيب الحاوية يعدل الطابع الزمني حتى إذا لم تقم بتغيير أي ملف فيه. إذا كنت لا تريد أن يحدث ذلك ، فما عليك سوى تركيب مستوى الصوت read-only

لقد كنت أستخدم الزئبق بالطريقة الموصى بها وأرغب في أن تكون حذراً ، خاصة إذا اختلف أي من الآلات. تمتلئ Dropbox Fora بشكاوى من مشاكل اسم الملف الغامضة التي تظهر تلقائيًا. HG (وأفترض GIT) لن يلاحظ أو يشتكي أثناء الفحص الروتيني وستسمع فقط عن الفساد عندما يشكو من إعادة الريبو الفاسدة عند محاولة استخدامه بشكل حقيقي. اخبار سيئة. أتمنى أن أكون أكثر تحديداً بشأن المشكلة وأمراضها ؛ ما زلت أحاول الخروج من هذه الفوضى بنفسي.

أنا أحب الجواب من قبل دان ماكنفين! أنا أستخدم 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'

نستخدم هذه الطريقة (إنشاء مستودع عاري في Dropbox) على أ مشاركة المجلد.

يمكن لمجموعة صغيرة من المطورين سحب من هذا المستودع المزامن العاري وإنشاء استنساخ محلي. بمجرد الانتهاء من وحدة العمل ، ندفع إلى الأصل.

شيء واحد أفتقده هو وسيلة جيدة لإرسال بريد إلكتروني مع معلومات التغيير بمجرد حدوث الدفع إلى الأصل. نحن نستخدم Google Wave لتتبع التغييرات يدويًا.

يوجد أيضًا مشروع مفتوح المصدر (مجموعة من البرامج النصية Cross Platform [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

تحقق من مشروع ويكي والأدلة للحصول على المرجع والدروس التعليمية الكاملة.

أقوم بتخزين repo غير الجيثي على Dropbox. كان أحد التحذيرات التي واجهتها متزامنة بعد إعادة التثبيت. ستقوم Dropbox بتنزيل أصغر الملفات أولاً قبل الانتقال إلى أكبر الملفات. ليست مشكلة إذا بدأت في الليل وعدت بعد عطلة نهاية الأسبوع :-)

موضوعي - http://forums.dropbox.com/topic.php؟id=29984&replies=6

أنا أحب الجواب الأعلى من قبل دان ماكنفين. انتهى بي الأمر إلى القيام بتسلسل أوامر 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}"

يتطلب البرنامج النصي اسم المشروع فقط. سوف يولد مستودع git في ~/Dropbox/git/ تحت الاسم المحدد وسيدفع محتويات الدليل الحالي بالكامل إلى فرع Origin Master الذي تم إنشاؤه حديثًا. إذا تم إعطاء أكثر من اسم مشروع واحد ، فسيتم استخدام وسيطة اسم المشروع بشكل صحيح.

اختياريا ، تحدد وسيطة الأوامر -r الفرع البعيد الذي سيدفع إلى Master Origin. يمكن أيضًا تحديد موقع Master Origin Project مع وسيطة -M. يتم أيضًا وضع ملف .gitignore الافتراضي في دليل الفرع البعيد. يتم تحديد الافتراضات الافتراضية ملف الدليل و .gitignore في البرنامج النصي.

الآن في عام 2014 ، كنت أستخدم Git و Dropbox لمدة عام ونصف تقريبًا دون مشكلة. بعض النقاط على الرغم من:

  • جميع أجهزتي التي تستخدم Dropbox موجودة على Windows ، إصدارات مختلفة (7 إلى 8) + 1 MAC.
  • أنا لا أشارك المستودع مع شخص آخر ، لذلك أنا الوحيد الذي قام بتعديله.
  • git push يدفع إلى مستودع عن بُعد ، بحيث إذا تاله من أي وقت مضى ، فيمكنني استعادته بسهولة.
  • اضطررت إلى إنشاء اسم مستعار في C:\Users مع mklink /D link target لأن بعض المكتبات كانت تشير إلى المواقع المطلقة.

بالنسبة لـ 2 Cents Dropbox ، يجعل Sence فقط للاستخدام الشخصي حيث لا ترغب في عناء الحصول على مضيف ريبو المركزي. بالنسبة لأي تطوير مهني ، من المحتمل أن تخلق مشكلات أكثر مما ستحله ، كما ذكر عدة مرات في الخيط بالفعل ، 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

لقد واجهت مشكلة مماثلة وأنشأت نصًا صغيرًا لنفسه. الفكرة هي استخدام Dropbox مع GIT بأكبر قدر ممكن. حاليا ، لقد نفذت بسرعة روبي رمز ، وسأضيف المزيد.

يمكن الوصول إلى البرنامج النصي في https://github.com/nuttylabs/box-git.

مقاربة أخرى:

جميع الإجابات حتى الآن ، بما في ذلك dan الإجابة وهو الأكثر شعبية ، معالجة فكرة استخدام Dropbox لتركيز مستودع مشترك بدلاً من استخدام خدمة تركز على git مثل github ، bitbucket ، إلخ.

ولكن ، بما أن السؤال الأصلي لا يحدد ما هو استخدام "GIT و Dropbox معًا بشكل فعال" يعني حقًا ، دعنا نعمل على نهج آخر: "استخدام Dropbox لمزامنة Trantree فقط."

كيف تربط هذه الخطوات:

  1. داخل دليل المشروع ، يخلق المرء فارغًا .git دليل (على سبيل المثال mkdir -p myproject/.git)

  2. un-sync .git دليل في Dropbox. إذا كنت تستخدم تطبيق Dropbox: انتقل إلى التفضيلات ، والمزامنة ، و "اختر المجلدات للمزامنة" ، حيث .git يحتاج الدليل إلى الحصول على علامة. هذا سوف يزيل .git الدليل.

  3. يركض git init في دليل المشروع

كما أنه يعمل إذا كان .git موجود بالفعل ، ثم قم فقط بالخطوة 2. ستحتفظ Dropbox بنسخة من ملفات GIT في الموقع الإلكتروني.

سوف تتسبب الخطوة 2 في عدم مزامنة بنية نظام GIT ، وهي النتيجة المطلوبة لهذا النهج.

لماذا يستخدم المرء هذا النهج؟

  • سيكون للتغييرات التي لا تقم بإيجاد نسخة احتياطية من Dropbox ، وسيتم مزامنتها عبر الأجهزة.

  • في حالة مسامير Dropbox شيء عند المزامنة بين الأجهزة ، git status و git diff سيكون مفيدًا لفرز الأشياء.

  • يوفر المساحة في حساب Dropbox (لن يتم تخزين السجل بأكمله هناك)

  • إنه يتجنب المخاوف التي أثارتها dubek و @ats في التعليقات على إجابة @دان ، والمخاوف من @clu في إجابة أخرى.

سيعمل وجود جهاز تحكم عن بعد في مكان آخر (GitHub ، وما إلى ذلك) بشكل جيد مع هذا النهج.

العمل على فروع مختلفة يجلب بعض القضايا ، والتي يجب العناية بها:

  • تتمثل إحدى المشكلات المحتملة في وجود Dropbox (بشكل غير ضروري؟) مزامنة العديد من الملفات التي يحتمل أن تتحقق من فروع مختلفة.

  • إذا تم فحص جهازين متزامنين أو أكثر

طريقة واحدة للتغلب على هذه المشكلات هي الاستخدام git worktree للحفاظ على عمليات الخروج من الفرع في أدلة منفصلة.

دون استخدام أدوات تكامل الطرف الثالث ، يمكنني تحسين الحالة قليلاً واستخدام Dropbox وخدمات القرص السحابية الأخرى مثل Spideroak مع GIT.

الهدف من ذلك هو تجنب التزامن في منتصف تعديلات هذه الملفات ، حيث يمكنه تحميل حالة جزئية ثم يقوم بتنزيلها مرة أخرى ، مما يفسد حالة git تمامًا.

لتجنب هذه المشكلة ، فعلت:

  1. قم بتجميع فهرس Git الخاص بي في ملف واحد باستخدام git bundle create my_repo.git --all.
  2. قم بتعيين تأخير لمراقبة الملف ، على سبيل المثال 5 دقائق ، بدلاً من الفوري. هذا يقلل من فرص Dropbox مزامنة حالة جزئية في منتصف التغيير. كما أنه يساعد إلى حد كبير عند تعديل الملفات على القرص السحابي أثناء التنقل (كما هو الحال مع تطبيقات توصيل الملاحظات الفورية).

إنه ليس مثاليًا لأنه لا يوجد ما يضمن أنه لن يفسد حالة Git مرة أخرى ، لكنه يساعد في الوقت الحالي ، ولم أحصل على أي مشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top