मेरा स्थानीय और दूरस्थ सर्वर दोनों सेंटो 7 हैं।
मैंने git संस्करण 1.8.3.1 के साथ स्थानीय रेपो में README.md को ट्रैक किया। जब मैंने README.md को संशोधित किया और रिमोट बेयर रेपो पर पुश किया, तो मैं नहीं चाहता कि README.md चेक आउट किया जाए।
रिमोट रेपो में, गिट संस्करण 2.16.6 है, मैंने नीचे post-receive सेट किया है:

while read oldrev newrev ref
do
     if [[ $ref = refs/heads/"$BRANCH" ]];
        then
        git --work-tree="$DEPLOY_DIR"  --git-dir="$GIT_DIR" checkout -f
     fi
done

रिमोट रेपो में, मैं नीचे के रूप में sparse-checkout सेट करता हूं:

/*
!/README.md

मैंने पाया README.md अभी भी वहीं है, और संशोधित नहीं है।

फिर, मैंने sparse-checkout को निम्नानुसार संशोधित किया:

!/README.md
/*

मुझे remote: error: Entry 'README.md' not uptodate. Cannot merge. मिला है

कौन सा sparse-checkout सही है?समस्या कहां है?

0
kittygirl 14 अप्रैल 2020, 21:04

1 उत्तर

सबसे बढ़िया उत्तर

यह स्पॉट-द-डिफरेंस खेलने का समय है। यहाँ मेरा परीक्षण सेटअप है, यह विरल चेकआउट को ठीक से काम करते हुए दिखाता है जब मैं doit। यह मेरे टर्मिनल बफ़र्स में से एक सीधा सी एंड पी है, फ़ंक्शन परिभाषा की प्रतिलिपि बनाएँ और कहें doit

$ doit () { 
set -x
git init testlocal; cd $_
git commit --allow-empty -m-
git clone --bare . ../testremote; cd $_
git config core.sparsecheckout true
mkdir -p hooks info worktree
printf %s\\n /\* \!/README.md >info/sparse-checkout
tee hooks/post-receive <<'EOD'; chmod +x $_
while read oldrev newrev ref; do
        if [[ $ref = refs/heads/master ]]; then
                git --work-tree="$GIT_DIR/worktree" checkout -f
        fi
done
EOD
cd -
touch notREADME.md README.md
git add .; git commit -m-
git push ../testremote master
ls ../testremote/worktree
set +x
}
$ doit
+ git init testlocal
Initialized empty Git repository in /home/jthill/src/snips/testlocal/.git/
+ cd testlocal
/home/jthill/src/snips/testlocal
+ git commit --allow-empty -m-
[master (root-commit) 6ed44ec] -
+ git clone --bare . ../testremote
Cloning into bare repository '../testremote'...
done.
+ cd ../testremote
+ git config core.sparsecheckout true
+ mkdir -p hooks info worktree
+ printf '%s\n' '/*' '!/README.md'
+ tee hooks/post-receive
while read oldrev newrev ref
do
     if [[ $ref = refs/heads/master ]];
        then
        git --work-tree="$GIT_DIR/worktree" checkout -f
     fi
done
+ chmod +x hooks/post-receive
+ cd -
/home/jthill/src/snips/testlocal
+ touch notREADME.md README.md
+ git add .
+ git commit -m-
[master 64f5358] -
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
 create mode 100644 notREADME.md
+ git push ../testremote master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 240 bytes | 240.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ../testremote
   6ed44ec..64f5358  master -> master
+ ls --color=auto ../testremote/worktree
notREADME.md
+ set +x
1
jthill 14 अप्रैल 2020, 19:34