গিট অন্য পিসি থেকে পরিবর্তনগুলি চাপানোর পরে গিথুবগুলিতে পরিবর্তনগুলি ঠেলে দিচ্ছে না


1

গিট সম্পর্কিত আমার নিম্নোক্ত সেটআপ রয়েছে:

  • আর্চ লিনাক্স এবং ডিফল্ট গিট ক্লায়েন্ট চলমান একটি ছোট সার্ভার। নির্দিষ্ট ফাইলগুলিতে স্বয়ংক্রিয়ভাবে পরিবর্তন আনতে এবং তারপরে আমার গিথুব সংগ্রহস্থলে সেই পরিবর্তনগুলি ঠেকাতে আমার এই সেটআপটি রয়েছে।
  • আমার উইন্ডোজ 8.1 পিসি সহ স্মার্টজিট ইনস্টল করা আছে। আমি মাঝেমধ্যে ফাইলগুলিতে পরিবর্তনগুলি করি যা আমি নিজে থেকে আমার গিথুব সংগ্রহস্থলে ম্যানুয়ালি চাপি।

আমার যে সমস্যাটি হচ্ছে তা হ'ল আমি যখন আমার উইন্ডোজ পিসিতে ফাইলগুলিতে কিছু পরিবর্তন করি তখন সেই পরিবর্তনগুলিকে ধাক্কা দিই, আমার আর্চ লিনাক্স সার্ভারটি দৃশ্যত দূরবর্তী সংগ্রহস্থলের পরিবর্তনের জন্য এটি চাপ দেওয়ার ক্ষমতা হারিয়ে ফেলে। আর্ক লিনাক্স ক্লায়েন্টটি উইন্ডোজ পিসির সাথে কিছু না ধাকালাকালীন সমস্যা ছাড়াই এটি স্বয়ংক্রিয় পরিবর্তনগুলি ধাক্কা দিতে সক্ষম। কিছু হওয়ার পরে কিছু ভেঙে যায়। এই সমস্যার সমাধানের একমাত্র উপায়টি হ'ল আমার আর্চ লিনাক্স সার্ভারের স্থানীয় সংগ্রহস্থল মুছে ফেলা এবং তারপরে রিমোট থেকে টেনে একটি নতুন স্থানীয় সংগ্রহশালা তৈরি করা।

আমি কোনও পরিবর্তন করার আগে দূরবর্তী সংগ্রহস্থল থেকে টানতে এবং আনতে আর্ক লিনাক্স ক্লায়েন্টকে স্ক্রিপ্ট করেছি এবং আমার পিসিতে পরিবর্তনগুলি করার সময় আমি একই কাজ করি।

এটি কেন ঘটছে এবং ভবিষ্যতে এই সমস্যাটি রোধ করতে আমি কী করতে পারি তা বুঝতে দয়া করে কেউ আমাকে সহায়তা করতে পারেন? সাহায্য ব্যাপকভাবে প্রশংসা করা হবে।

আমি আমার আর্চ লিনাক্স সার্ভারে স্ক্রিপ্টগুলি এখানে ব্যবহার করছি:

মূল স্ক্রিপ্ট:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

# Test if an internet connection is present
ping -c 3 google.com > /dev/null 2> /dev/null
if [ $? != 0 ]; then
        exit 1
fi

# Git requires that the working directory be the repository I am working with
cd /home/git-user/repositories/xjdhdr-random-code

# Update local repository to ensure no conflicts exist before I make changes
/home/git-user/bin/expect-gitpull.sh

# snip: Everything between these two commands basically make a lot of changes to a lot of text files. Probably has nothing to do with Git or my problem.

# Commit changes to remote repository.
cd /home/git-user/repositories/xjdhdr-random-code
git add -A -f --ignore-errors --
git commit -m "Automatic commit of machine generated changes to repository" --no-edit --


/home/git-user/bin/expect-gitpush.sh

exit 0

/home/git-user/bin/expect-gitpull.sh

#!/bin/expect

set password {*don't need anyone to see my passphrase*}

cd /home/git-user/repositories/xjdhdr-random-code

spawn git pull origin

expect "Enter passphrase for key '/home/git-user/.ssh/id_rsa':"

send -- "$password\r"

send -- "\r"

expect "%PROMPT%"

spawn git fetch -p origin

expect "Enter passphrase for key '/home/git-user/.ssh/id_rsa':"

send -- "$password\r"

send -- "\r"

expect "%PROMPT%"

/home/git-user/bin/expect-gitpush.sh

#!/bin/expect

set password {*ditto*}

cd /home/git-user/repositories/xjdhdr-random-code

spawn git push --recurse-submodules=check

expect "Enter passphrase for key '/home/git-user/.ssh/id_rsa':"

send -- "$password\r"

send -- "\r"

expect "%PROMPT%"

বিটিডব্লিউ: আপনি এসএসএইচ কী এর পাসওয়ার্ড মুছে ফেলতে পারেন, এর জন্য ... monstrosity প্রয়োজন removing এবং তারপরে, আপনাকে একটি ব্যর্থ পুশের আউটপুটটি দেখতে হবে।
ড্যানিয়েল বি

আপনার পরামর্শ অনুসরণ করে, আমি আমার স্ক্রিপ্টগুলি কেন কাজ করছে না তা বুঝতে পেরেছি। আমি নীচের কারণটি উল্লেখ করেছি।
এক্সজেডিএইচডিআর

এবং এসএসএইচ কী এবং পাসফ্রেসগুলির জন্য, আমি এটি পাসফ্রেজ ছাড়াই তৈরি করতে পারতাম তবে যে ডকুমেন্টেশন পড়েছি তা এর বিপরীতে পরামর্শ দিয়েছে।
এক্সজেডিএইচডিআর

স্ক্রিপ্টিংয়ের জন্য আপনাকে যেভাবেই পাসওয়ার্ড সংরক্ষণ করতে হবে তবে খুব বেশি পার্থক্য হয় না।
ড্যানিয়েল বি

উত্তর:


0

সমস্যাটা কী তা বুঝতে পেরেছি। ডিফল্টরূপে, প্রত্যাশাকে সেট করা হয় যাতে 10 সেকেন্ডের পরে কোনও প্রত্যাশিত কমান্ডের মেয়াদ উত্তীর্ণ হয় যদি তাদের জন্য অপেক্ষা করতে বলা স্ট্রিংটি উপস্থিত না হয়। আমার ক্ষেত্রে, "গিট পুশ" কমান্ড চলাকালীন "% PROMPT%" প্রত্যাশার সময়সীমা শেষ হয়েছিল। এবং যেহেতু পরে আর কোনও আদেশ ছিল না, তাই স্ক্রিপ্টটি সমাপ্ত করা হয়েছিল। এর অর্থ হ'ল ধাক্কা সফলভাবে শেষ করতে পারেনি।

সমাধানটি হ'ল স্ক্রিপ্টের শীর্ষের নিকটে সেট টাইমআউট এক্স যুক্ত করা , আপনি যে সেকেন্ডটি অপেক্ষা করতে চান তার সংখ্যাটির সাথে এক্সকে প্রতিস্থাপন করুন (বা আপনি যদি অনির্দিষ্টকালের জন্য অপেক্ষা করতে চান তবে -1 ব্যবহার করুন)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.