অনেক গিট সংগ্রহস্থল পরিচালনা করা


87

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

আমি এই সংগ্রহস্থলগুলির সাথে একাধিক জায়গায় কাজ করি। আমি যখন কিছু সংগ্রহস্থলে পরিবর্তন করেছি তখন আমি অন্য জায়গাগুলিতে সংগ্রহস্থলগুলি আপডেট করতে সক্ষম হতে চাই।

সুতরাং এতে আমার অনেক ডিরেক্টরি সহ একটি ডিরেক্টরি রয়েছে।

  1. আমি কীভাবে এগুলি সব আনতে পারি?
  2. তাদের কারওর অপরিবর্তিত পরিবর্তন আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?
  3. তাদের যে কোনওটির একত্রীকরণের পরিবর্তন রয়েছে কিনা তা আমি কীভাবে চেক করতে পারি?

এবং এটি একটি কমান্ড দিয়ে এগুলি করতে সক্ষম হওয়ায় ভাল লাগবে।

আউটপুটটি আসলে করণীয়গুলিকে লক্ষ্য করার জন্য যথেষ্ট নীরব থাকা দরকার।


একই প্রশ্নের উত্তর দেওয়া হয়েছিল hg mercurial
সার্জ স্ট্রোব্যা্যান্ড্ট

আমি ব্যাচ / শেল স্ক্রিপ্ট তৈরি করতে এবং একযোগে এটি সম্পাদন করতে আমার কোড সম্পাদক (ভিএস কোড) এর মাল্টি-কার্সার-সিলেক্ট / মাল্টি-লাইন সম্পাদনা বৈশিষ্ট্যটি ব্যবহার করি। এই সহজ নির্বোধ সমাধান সহ, আমি জানি যে আমি কী করছি এবং আমি এই আদেশগুলি কার্যকর করার থেকে কী আশা করতে পারি। কোন অনুমান করা, শেখা, কোন কাস্টমাইজেশন প্রয়োজন। অন্য কারণটি হ'ল, প্রতিবারই বিভিন্ন রেপোর কমান্ডগুলি চালাতে চাই যা একটি সাধারণ প্যারেন্টের ডিরেক্টরিতে থাকে।
ইসমাইলস

উত্তর:


45

আমি একাধিক সংগ্রহস্থল সরঞ্জাম মিঃ সুপারিশ । আমি কিছু সময়ের জন্য অন্যদের দ্বারা প্রস্তাবিত হিসাবে একটি কাস্টম শেল স্ক্রিপ্ট ব্যবহার করতাম, তবে মিঃ ব্যবহারের ফলে আমার জন্য নিম্নলিখিত সুবিধাগুলি রয়েছে:

  • এটি জেনেরিক: বিভিন্ন সংস্করণ নিয়ন্ত্রণ ব্যবস্থার সংমিশ্রণ ব্যবহার করা যেতে পারে, কেবল গিট নয় (যেমন মার্কুরিয়াল, এসভিএন ইত্যাদি)।
  • এটি দ্রুত: এমআর সমান্তরালভাবে একাধিক কাজ সম্পাদন করতে পারে। আমি প্রচুর গিট / পার্শ্বযুক্ত সংগ্রহস্থল ব্যবহার করি এবং সেগুলি দিনে বেশ কয়েকবার সিঙ্ক করি। মিঃ প্রচুর পরিমাণে এই প্রক্রিয়াটির গতি বাড়ান।
  • সংগ্রহস্থল চেকআউটগুলির তালিকা পরিচালনা করা সহজ এবং দ্রুত। আপনার কাস্টম স্ক্রিপ্টে প্রকল্পগুলির তালিকা পরিবর্তনের পরিবর্তে কেবল 'মিস্টার রেজিস্টার' ব্যবহার করুন use

নীরব আউটপুট সম্পর্কে আপনার প্রশ্নের বিষয়ে: কমান্ড লাইন সুইচ-কিউ ব্যবহার করে ভার্বোসিটির স্তরটি সংশোধন করা যেতে পারে। আমি ডিফল্ট আউটপুটটিকে পছন্দ করি যা সংক্ষিপ্ত এবং পরিষ্কার সংক্ষিপ্তসারে আউটপুটটিকে সুন্দরভাবে একীভূত করে।

আমি এমআর কমান্ডের জন্য নীচের উপন্যাসটি ব্যবহার করি তা নিশ্চিত করার জন্য যে এমআর সর্বদা আমার ডিফল্ট প্রকল্পের তালিকাটি OME হোমমে সঞ্চিত রাখে এবং 5 টি সমান্তরাল থ্রেড ব্যবহার করে:

alias mr='mr -d ~/ -j 5 '

এটি দুর্দান্ত তবে গিট ট্যাগিং সমর্থন করে না (2016-08 হিসাবে)
হুগো জারাগোজা

@ সিএডি ব্লক করুন এটি ইনস্টল পৃষ্ঠায় উইন্ডোজগুলির উল্লেখ করে না, তবে পার্ল স্ক্রিপ্ট হিসাবে এটি উইন্ডোতে / করা / পরিচালনা করতে পারে।
স্কিপাইলট

4
@ হুগোজারাগোজা, আপনি সর্বদা নিজের দ্বারা এই আদেশটি সংজ্ঞায়িত করতে পারেন [খেলাপি] ট্যাগ = গিট ট্যাগ "$ @"
অ্যালেক্স

4
alias pa='find . -name .git -print -execdir git pull \;'তারপরে, paযথেষ্ট
ডনসং

19

আমি অবশ্যই বলতে পারি যে আমি বর্তমানে গৃহীত উত্তর দিয়ে শুরু করেছি (কেবলমাত্র সহায়িকা স্ক্রিপ্টগুলির একগুচ্ছ যা পুনরায় সংগ্রহস্থলগুলির উপরে পুনরাবৃত্তি হয়), তবে সর্বোপরি আমার কাছে অভিজ্ঞতা ছিল না।

সুতরাং, মিঃ, রেপো এবং গিট-সাবমডিউলগুলি চেষ্টা করার পরে আমি প্রত্যেকে আলাদা আলাদাভাবে অভাব দেখতে পেয়েছি, সুতরাং, আমি আমার নিজস্ব বৈকল্পিকটি শেষ করেছি: http://fabioz.github.io/mu-repo যা একটি পরিণত সরঞ্জাম এই পয়েন্ট - এটিতে ওয়ার্কফ্লোস রয়েছে যা আপনাকে এটি করতে দেয়:

  • একাধিক রেডিও ক্লোন করুন
  • একাধিক ভাগে বর্তমান পরিবর্তনগুলি (এবং সম্পাদনা করুন)
  • আগত পরিবর্তনগুলির পূর্বরূপ দেখুন
  • সমান্তরালভাবে একাধিক ভাগে কমান্ডগুলি চালান
  • repos এর গ্রুপ তৈরি করুন
  • একাধিক ভান্ডারে নন গিট সম্পর্কিত কমান্ডগুলি চালান
  • ইত্যাদি ( আরও তথ্যের জন্য হোমপেজ দেখুন)।

মনে রাখবেন যে এটি যে কোনও ওএসকে সমর্থন করে যেখানে পাইথন চলে;)


আপনার উত্তর থেকে মিউ-রেপো মিস্টার যা করেন তার চেয়ে ভাল suggest তবে মিউ-রেপো নন গিট রেপো সমর্থন করে না।
শৈনাক সোনতকেকে

4
তবে, এটির উদ্দেশ্য হ'ল কেবল গিট রেপোকে সমর্থন করা (যা প্রশ্নটি জিজ্ঞাসা করেছিল) - যদিও আপনি mu sh <some command>একাধিক ভান্ডারে কিছু স্বেচ্ছাসেবক কমান্ড কার্যকর করতে পারেন , এর সম্পূর্ণ চূড়ান্ততা অন্য সংস্করণ নিয়ন্ত্রণ সিস্টেমের সাথে নয়, গিটের সাথে কাজ করছে .. ... যদি আপনার এটির প্রয়োজন হয়, তবে হ্যাঁ, দয়া করে একটি আলাদা সরঞ্জাম ব্যবহার করুন।
ফ্যাবিও জাদরোজনি

14

জিআর (গিট-রান) এমআর এর কার্যকারিতাপ্রসারিতকরে (কেবল এর জন্যgit)। আমি এর ট্যাগ সিস্টেমটি ব্যবহার করে একাধিক গিট রেপো সংগঠিত করা সহজ মনে করি। কোডটিgrযদিও ভালভাবে বজায় থাকে না। আপনি যদি ব্যাশ ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে আপনি এটিফর্মের-t tagপরিবর্তেব্যবহার করেছেন#tag


দেখে মনে হচ্ছে উন্নয়ন তখন থেকে কিছুটা পিছিয়ে গেছে: github.com/mixu/gr/رافs
ডেভ ফ্যাস্টাক

8

আপনার সংগ্রহস্থলগুলি কোথায় তা নির্দিষ্ট করার জন্য আপনি একটি কাস্টম ফাইল সহ রেপো ব্যবহার করতে চেষ্টা manifest.xmlকরতে পারেন। এটি কীভাবে করা যায় সে সম্পর্কে কিছু ডকুমেন্টেশন রয়েছে।

বিকল্পভাবে আপনি ব্যবহার করতে পারেন git-submodule(1)


4
গিট-সাবমডিউলটি ভাল হবে, যদি আমি সংগ্রহস্থলগুলিকে ঠিক একই স্থানে রাখতে চাই, তবে সেটি হয় না। সংগ্রহস্থলের সেট প্রতিটি জায়গায় এক রকম হয় না। অনির্দিষ্ট পরিবর্তন হতে পারে। আমি এখনও মার্জ করতে চাই না এমন কিছু পরিবর্তন হতে পারে।
iny

গিট-সাবমডিউল সম্পর্কে আমি জানতাম না। এটি উল্লেখ করার জন্য ধন্যবাদ।
সিকোড়া

রেপোর জন্য ডকুমেন্টেশন বেশ ন্যূনতম এবং দেখে মনে হচ্ছে এটি ব্যবহার করতে চাই বিভিন্ন ধরণের কাজের প্রবাহের জন্য is
iny

6

আমি " রেপোজেড " নামে একটি সরঞ্জাম লিখেছি যা গিট সংগ্রহস্থলগুলি ক্লোন করার সাথে সাথে স্বয়ংক্রিয়ভাবে আবিষ্কার করে বা এগুলিতে কোনও শাখা পরিবর্তন করার মতো কোনও পরিবর্তন ঘটে, উদাহরণস্বরূপ।

একবার পাওয়া গেলে, সংগ্রহস্থলগুলি "ট্র্যাক" করা হয়। এটি কেবল পশ-গিট দ্বারা অনুপ্রাণিত ঘন স্থিতির তথ্য সহ স্থানীয় সংগ্রহস্থলের তালিকায় তাদের দেখায় । এটিতে বর্তমান শাখা এবং ফাইল স্ট্রিট এবং আগত বা বহির্গামী কমিটগুলির গণনার মতো আরও উপাদান রয়েছে।

RepoZ UI

এটি আপনার স্থানীয় ভান্ডারগুলি এবং প্রতিশ্রুতিবদ্ধ বা চাপ দেওয়ার জন্য অসম্পূর্ণ কাজগুলি ট্র্যাক রাখতে সহায়তা করে। এছাড়াও, আপনি একটি সংগ্রহস্থল থেকে অন্য সংগ্রহস্থলে স্যুইচ করতে নেভিগেশন হিসাবে সংগ্রহস্থল তালিকাটি ব্যবহার করতে পারেন।

RepoZ নেভিগেশন

"আমি কীভাবে এই সমস্তগুলি আনতে পারি?"

উইন্ডোজের সংস্করণ একটি সংগ্রহস্থল আনতে বা টানতে একটি প্রসঙ্গ মেনু সরবরাহ করে। মাল্টি-সিলেক্ট দিয়ে আপনি একবারে একাধিক সংগ্রহস্থলগুলিতে ক্রিয়া চালাতে পারেন।

তবে আপনি অন্য একটি বৈশিষ্ট্যটি খুব দরকারী খুঁজে পেতে পারেন:

RepoZ স্বতঃ-আনুন

অটো আনার মাধ্যমে আপনি রেপোজেডকে আপনার সমস্ত গিট রিপোজিটরিগুলির রিমোটগুলি পর্যায়ক্রমে পটভূমিতে আনতে বলতে পারেন। এই ফেচগুলি অবশ্যই আপনার স্থানীয় কমিটের সাথে সংঘর্ষ করবে না। এর মতো কোনও স্থানীয় একীকরণের চেষ্টা নেই git pull


হ্যাঁ, খুব খারাপ এবং প্রাপ্য নয়। যে কোনও সময় PRs এর জন্য উন্মুক্ত। আমাকে পিং কর.
ওয়েস্টার

5

গিটস্লভ এমন একটি সরঞ্জাম যা সুপার এবং সাবসের মধ্যে একটি সুপারপ্রজেক্ট / সাবপ্রজেক্ট সম্পর্ক তৈরি করে অনেক সংগ্রহস্থলের উপরে একই কমান্ড চালাতে পারে। এটি (ডিফল্টরূপে) আউটপুট সংক্ষিপ্তকরণ সরবরাহ করে যাতে আপনি অনন্য আউটপুট সরবরাহকারী সংগ্রহস্থলগুলিতে মনোনিবেশ করতে পারেন (গিট স্ট্যাটাসের জন্য দরকারী, গিট এলএস-ফাইলগুলির জন্য তেমন দরকারী নয়)।

এটি সাধারণত এমন প্রকল্পগুলির জন্য ব্যবহৃত হয় যেখানে আপনাকে বেশ কয়েকটি সংগ্রহস্থল একসাথে সংগ্রহ করতে হবে এবং একই শাখায় বা একই সময়ে বা যে কোনও কিছুতে ট্যাগ রাখতে হবে। আমার (খালি) সংগ্রহস্থলের ডিরেক্টরিগুলির জন্য আমার কাছে কেবল একটি সামান্য মেকফাইল রয়েছে যা আমাকে নির্বিচারে গিট কমান্ড চালাতে দেয়, যা আপনি দেখতে পাচ্ছেন আমি প্রাথমিকভাবে fsck এবং gc এর জন্য ব্যবহার করি:

full: fsck-full gc-aggressive
        @:

fsck-full:
        for f in */.; do (cd $$f; echo $$f; git fsck --full || echo $$f FAILED); done

gc-aggressive:
        for f in */.; do (cd $$f; echo $$f; git gc --aggressive || echo $$f FAILED); done

%:
        for f in */.; do (cd $$f; git $@ || echo $$f FAILED); done

5

ডিরেক্টরিতে (পুনরাবৃত্তভাবে) পাওয়া সমস্ত সংগ্রহস্থলের উপর কোনও গিট কমান্ড চালানোর জন্য আমি একটি নাম এবং একটি ফাংশন তৈরি করেছি। আপনি এটি এখানে পাবেন: https://github.com/jaguililla/dotfiles/git

এই কোড:

#!/bin/sh
# To use it: source git_aliases

# Example: rgita remote \;
alias rgita='find . -type d -name .git -execdir git'

# Example: rgit remote -vv
rgit() {
  rgita "$@" \;
}

আশা করি এটা সাহায্য করবে :)


4
পাতলা এবং দরকারী!
কেভিন চৌ চৌ

কল্পিত! সরল এক-লাইনের করা .bash_aliases: alias rgit='function _rgit(){ find . -type d -name .git -printf "\n%p\n" -execdir git "$@" \;; }; _rgit'। এটি উত্স, তারপর যেমন কল rgit status
ford04

4

আপনি এর git-status-allজন্য রত্নটি ব্যবহার করতে পারেন : https://github.com/reednj/git-status- all

# install the gem    
gem install git-status-all

# use the status-all subcommand to scan the directory
git status-all

এছাড়াও এখানে আনার বিকল্প রয়েছে যা স্থিতি প্রদর্শন করার আগে সমস্ত সংগ্রহস্থলের জন্য উত্স থেকে আনতে হবে:

git status-all --fetch

গিট স্ট্যাটাস সব


4
খুব সুন্দর পন্থা। বেশিরভাগ উচ্চতর ভোটের সরঞ্জামগুলির বিপরীতে, প্রথমে সংগ্রহস্থলগুলি নিবন্ধকরণ করার দরকার নেই, পরিবর্তে এটি কেবলমাত্র সমস্ত সাব-ডিরেক্টরিকে পরীক্ষা করে।
লুয়েটর

find . -name .git -print -execdir git status \;ঠিক আছে
ডনসং

3

আমি আমার স্ক্রিপ্টগুলিতে সহজেই গিট কমান্ড প্রয়োগ করতে এই স্ক্রিপ্টটি ব্যবহার করি।

#!/bin/sh
if [ ! "$1" = "" ] ; then

   if [ "$GITREPO" = "" -a -d "$HOME/cm/src" ] ; then
      GITREPO="$HOME/cm/src"
   fi

   if [ "$GITREPO" != "" ] ; then

      echo "Git repositories found in $GITREPO"
      echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-"

      DIRS="`/bin/ls -1 $GITREPO`"

      for dir in $DIRS ; do

         if [ -d $GITREPO/$dir/.git ] ; then
            echo "$dir -> git $1"
            cd $GITREPO/$dir ; git $@
            echo
         fi

      done
   else

      echo "Git repositories not found."

   fi
fi

ডিফল্টরূপে স্ক্রিপ্টটি it / সেমি / এসসিআর তে গিট সংগ্রহস্থলের সন্ধান করবে তবে আপনি নিজের পছন্দ অনুযায়ী জিআইটিআরইপিও পরিবেশ পরিবর্তনশীল সেট করে এটি ওভাররাইড করতে পারেন।

এই স্ক্রিপ্টটি উপর ভিত্তি করে তৈরি এই স্ক্রিপ্টের


find . -name .git -print -execdir git pull \;আপনি কি মনে করেন তা করেন।
ডনসং

3

আমি একাধিক রেপো পরিচালনা করতে গীতা নামে একটি কমান্ডলাইন সরঞ্জাম লিখেছিলাম । এটি পাশাপাশি নিবন্ধিত রেপোসের স্থিতি প্রদর্শন করে

এখানে চিত্র বর্ণনা লিখুন

এটি কোনও কার্যনির্বাহী ডিরেক্টরি থেকে গিট কমান্ড / উপাত্তগুলিও অর্পণ করতে পারে।

এখন এই সরঞ্জামটি ব্যবহার করে আপনার প্রশ্নের উত্তর দিতে:

আমি কীভাবে এগুলি সব আনতে পারি?

gita fetch

তাদের কারওর অপরিবর্তিত পরিবর্তন আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

gita lsকমান্ড শো 3 সম্ভব প্রতীক শাখার নাম, যা নির্দেশ করছে পাশে

  • +: মঞ্চ পরিবর্তন
  • *: আনস্টেজড পরিবর্তনসমূহ
  • _: আনট্র্যাকড ফাইল / ফোল্ডার

তাদের যে কোনওটির একত্রীকরণের পরিবর্তন রয়েছে কিনা তা আমি কীভাবে চেক করতে পারি?

শাখার নামগুলি 5 উপায়ে রঙিন হয়

  • সাদা: স্থানীয় শাখার কোনও প্রত্যন্ত শাখা নেই
  • সবুজ: স্থানীয় শাখা দূরবর্তী শাখার সমান
  • লাল: স্থানীয় শাখা প্রত্যন্ত শাখা থেকে সরে গেছে
  • বেগুনি: স্থানীয় শাখা দূরবর্তী শাখার চেয়ে এগিয়ে (ধাক্কা দেওয়ার জন্য ভাল)
  • হলুদ: স্থানীয় শাখা প্রত্যন্ত শাখার পিছনে (মার্জ করার জন্য ভাল)

এটি ইনস্টল করতে, কেবল চালান

pip3 install -U gita

2

যদি এখনও কেউ এই থ্রেডটির দিকে তাকিয়ে থাকে তবে দয়া করে আমার শিট স্ক্রিপ্টটি গিটমে চেকআউট করুন

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

আপনি চালাতে পারেন git clone https://github.com/robbenz/gitme.git

এছাড়াও স্ক্রিপ্ট নীচে পোস্ট করা হয়

#!/bin/bash -e

REPOS=( 
/Users/you/gitrepo1
/Users/you/gitrepo2
/Users/you/gitrepo3
/Users/you/gitrepo4
)

MOVE="Moving to next REPO... \n" 

tput setaf 2;echo "What ya wanna do? You can say push, pull, commit, ftp push, or status"; tput sgr0

read input

if [ $input =  "commit" ]
then
    tput setaf 2;echo "Do you want a unique commit message? [y/n]";tput sgr0
    read ans
    if [ $ans = "y" ]
    then 
        for i in "${REPOS[@]}"
        do
            cd "$i"
            tput setaf 6;pwd;tput sgr0 
            git add . -A
            read -p "Commit description: " desc  
            git commit -m "$desc"
            tput setaf 2;echo  $MOVE;tput sgr0 
            sleep 1
        done 
    else 
        for i in "${REPOS[@]}"
        do
            cd "$i"
            tput setaf 6;pwd;tput sgr0 
            git add . -A
            git commit -m "autocommit backup point"
            tput setaf 2;echo  $MOVE;tput sgr0 
            sleep 1
        done
    fi 
elif [ $input = "push" ] || [ $input = "pull" ] || [ $input = "ftp push" ] || [ $input = "status" ]
    then
        for i in "${REPOS[@]}"
do
    cd "$i"
    tput setaf 6;pwd;tput sgr0 
    git $input 
    tput setaf 2;echo  $MOVE;tput sgr0 
    sleep 1
    done 
else tput setaf 1;echo "You have zero friends";tput sgr0 
fi

আমি আমার। / .Bash_ প্রোফাইলে তাই একটি উপনাম সেটআপ করি alias gitme='sh /path/to/gitme.sh'


1

আপনার rgit পরীক্ষা করা উচিত তে যা ডিরেক্টরি বৃক্ষের সমস্ত সংগ্রহস্থলে পুনরাবৃত্তভাবে গিট কমান্ড প্রয়োগ করে।

ডক্স থেকে:

এই ইউটিলিটিটি সমস্ত গিট রিপোজিস্টরির জন্য মূল ডিরেক্টরিটিতে (যা বর্তমান চলমান ডিরেক্টরি হতে পারে বা যদি এটি সেট করা থাকে - GIT_DIR এনভায়রনমেন্ট ভেরিয়েবলের দ্বারা প্রদত্ত ডিরেক্টরি) অনুসন্ধান করে, এই তালিকাটি সংগ্রহস্থল পাথের দ্বারা বাছাই করুন, প্রত্যেকটির মধ্যে chdir করুন তাদের, এবং নির্দিষ্ট গিট কমান্ড কার্যকর করে।


1

আমি সবেমাত্র একটি সরঞ্জাম তৈরি করেছি যা আপনি যা চান তা করুন!

  1. আমি কীভাবে এগুলি সব আনতে পারি? gmaster fetch
  2. তাদের কারওর অপরিবর্তিত পরিবর্তন আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি? gmaster status
  3. তাদের যে কোনওটির একত্রীকরণের পরিবর্তন রয়েছে কিনা তা আমি কীভাবে চেক করতে পারি? gmaster status

একে গিটমাস্টার বলা হয়: https://github.com/francoiscabrol/gitmaster


1

আমি এই সহজ ব্যাশ ফাংশনটি আমার .bash_ প্রোফাইলে লিখেছি কেবল সমস্ত গিট সংগ্রহস্থলে গিট, মাভেন, গ্রেডেল বা অন্য কোনও বাশ কমান্ড চালাতে সক্ষম হতে:

# usefull function to work with multiple git repositories
all() {
    failed=0
    printf '>>> START RUNNING: "%s" >>>' "$*"
    for d in */; do
        pushd "$d" > /dev/null
        if [ -d ".git" ]
        then
            printf '\n--------------------------------------------\n\n'
            pwd
            eval $@
            if [ $? -ne 0 ]
            then
                failed=1
                break;
            fi
        fi
        popd > /dev/null
    done
    if [ $failed -eq 0 ]
    then
        printf '\n--------------------------------------------\n'
        printf '<<< RAN "%s" WITH SUCCESS!!! <<<' "$*"
    else
        printf '\n<<< FAILED!!! <<<'
    fi
}

এটি এভাবে ব্যবহার করা যেতে পারে

all git st
all git pull
all ./gradlew clean test
etc.

যে কেউ তাদের সকলকে সমান্তরালভাবে চালাতে পারে: সমস্ত './ গ্রেডলি ক্লিন টেস্ট &'
চৌধুরীপেন

0

দাবি অস্বীকার : আমি www.repoflow.com এ এই সরঞ্জামটিতে কাজ করছি

আমি কীভাবে এগুলি সব আনতে পারি?
তাদের যে কোনওটির একত্রীকরণের পরিবর্তন রয়েছে কিনা তা আমি কীভাবে চেক করতে পারি?

  • আপনি জড়িত সমস্ত সংগ্রহস্থলগুলি (বা ধাক্কা / টান / প্রতিশ্রুতিবদ্ধ) আনতে পারেন, আনার পরে ইউআই নতুন সংগ্রহস্থল অবস্থার সাথে আপডেট করা হবে, যদি সংগ্রহস্থলটি অন্যদিকে সরানো হয় তবে আপনি ধরণের বিবাদ দেখতে এবং সেগুলি মার্জ করতে শুরু করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

তাদের কারওর অপরিবর্তিত পরিবর্তন আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

  • ইউআইতে আপনি প্রতিটি সংগ্রহস্থলের জন্য ফাইলগুলির স্থিতি দেখতে পাবেন (আপনি স্বতন্ত্রভাবে বা বাল্কে এগুলি যুক্ত / সরাতে পারেন)।

এখানে চিত্র বর্ণনা লিখুন

আমি এটি নিয়ে কাজ করছি, তবে এটি ওপি প্রশ্নগুলির সমাধানও করছে এবং একাধিক সংগ্রহস্থল পরিচালনা করতে সহায়তা করে, আপনি নিজের স্ক্রিপ্টগুলি তৈরি করতে আপনি ইউআই বা অন্তর্নিহিত গ্রাফকিউএল এপিআই ব্যবহার করতে পারেন, দয়া করে এটিকে অন্য বিকল্প হিসাবে বিবেচনা করুন।


0

সমস্ত একাধিক সংগ্রহস্থল আনার জন্য একটি কার্যকর সরঞ্জাম রয়েছে। git-pull-allঅবিচ্ছিন্নভাবে একাধিক গিট সংগ্রহস্থলগুলিতে চালিত করার জন্য একটি কমান্ড লাইন সরঞ্জাম।

স্থাপন

npm install -g git-pull-all

ব্যবহার

ধরুন আপনার কাছে এই ফাইল এবং ডিরেক্টরি রয়েছে:

~/Projects/
  cool-examples/
    .git/
  funny-movies/
  my-todos.txt
  super-express/
    .git/

আপনি যখন ডিরেক্টরিতে git-pull-allকমান্ডটি চালান ~/Projects, তখন এটি চাইল্ড গিট সংগ্রহস্থলগুলি (উপরের ক্ষেত্রে শীতল উদাহরণ এবং সুপার-এক্সপ্রেসে ) পাওয়া উচিত এবং তারপরে git pullতাদের প্রত্যেকের উপর কার্যকর করুন।

$ cd ~/Projects
$ git-pull-all
funny-movies/
Not a git repository
cool-examples/
Already up-to-date.
super-express/
Already up-to-date.
Done!
git-pull-all ~/Projects

গিটহাব লিঙ্ক: https://github.com/tatsuyaoiw/git-pull-all


0

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

এটি কোনও স্ক্রিপ্টের মতো সুবিধাজনক নয়, তবে যখন এটি আমার জন্য উত্স নিয়ন্ত্রণে আসে তখন আমি পছন্দ করি যে এটি পরিবর্তন করে। পরিবর্তনগুলি ওভাররাইট না করা ইত্যাদি সম্পর্কে সতর্কতা অবলম্বন করতে খুব লিখিত স্ক্রিপ্ট লাগে, ভিএস কোড পদ্ধতির সাথে সাথে আপনি খুব ভাল পরিমাণে দ্রুত তথ্য পাবেন যা আপনি নিজের উপর অভিনয় করতে পারেন।

দেখতে দেখতে এটির স্ক্রিনশটটি এখানে:

ভিএস কোডে উত্স নিয়ন্ত্রণ উইন্ডো


0

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

কেবল নিম্নলিখিতটি অনুলিপি করুন এবং পেস্ট করুন:

find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;

এটি ভেঙে দেওয়া:

find . -type d -maxdepth 2 -name .git 

বর্তমান ডিরেক্টরিতে (ডিরেক্টরি টাইপ) সমস্ত ডিরেক্টরি সন্ধান করুন (খুঁজে বের করুন) যার নাম ".git" (-নাম .git) রয়েছে, সর্বাধিক দুটি ডিরেক্টরি গভীর (1 এর পরিবর্তে 2) খুঁজছেন কারণ আমরা সন্ধান করছি গিট রেপো ফোল্ডারের মধ্যে গিট ফোল্ডার)।

-exec sh -c 

নিম্নলিখিত শেল কমান্ড চালান (চালনা sh -c)

'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'

ডিরেক্টরিটিকে প্রথম আর্গুমেন্টে (সিডি $ 0) পরিবর্তন করুন, তারপরে .git ফোল্ডার (সিডি ..) ছাড়ার জন্য এক স্তর উপরে ডিরেক্টরি পরিবর্তন করুন তারপরে বর্তমান শাখার জন্য গিট রেভ-পার্স চালিয়ে শাখাটি নির্দিষ্ট করার সময় গিট টান উত্সাহ করুন ... মাথা কমিট।

{} \;

"{}" হ'ল আমরা প্রাথমিক থেকে প্রাপ্ত ফলাফল সম্পর্কিত আপেক্ষিক পথ খোঁজ কমান্ড। দ্য ; কমান্ড শেষ করতে ব্যবহৃত হয়।

Zsh এ MacOS 10.14.6 এ পরীক্ষিত। যেমনটি রয়েছে, কেবল তখনই কাজ করে যখন প্রত্যন্ত এবং স্থানীয় শাখাগুলির নাম একই থাকে, এএফএআইকি।

স্থিতি পেতে আপনি এটি পরিবর্তন করতে পারেন। আমি আশা করি আপনি এটি আরও নমনীয় করে তুলতে যুক্তি যুক্ত করতে সক্ষম হতে পারেন তবে আমি এখনও চেষ্টা করি নি।


0

আমি ব্যাচ / শেল স্ক্রিপ্ট তৈরি করতে এবং একযোগে এটি সম্পাদন করতে আমার কোড সম্পাদক (ভিএস কোড) এর মাল্টি-কার্সার-সিলেক্ট / মাল্টি-লাইন সম্পাদনা বৈশিষ্ট্যটি ব্যবহার করি। এই সহজ নির্বোধ সমাধান সহ, আমি জানি যে আমি কী করছি এবং আমি এই আদেশগুলি কার্যকর করার থেকে কী আশা করতে পারি। কোন অনুমান করা, শেখা, কোন কাস্টমাইজেশন প্রয়োজন। অন্য কারণটি হ'ল, প্রতিবারই বিভিন্ন রেপোর কমান্ডগুলি চালাতে চাই যা একটি সাধারণ প্যারেন্টের ডিরেক্টরিতে থাকে।


-1

https://github.com/wwjamieson3/envisionTools এর গিটস্ট্যাট নামে একটি বাশ স্ক্রিপ্ট রয়েছে যা এটি করে এবং আরও অনেক কিছু করে। এটি জিএনইউ এবং ম্যাক সামঞ্জস্যপূর্ণ। যদি জিজ্ঞাসা করা হয় তবে এটি রিমোটগুলি থেকে আনতে পারে। এটি চিহ্নবিহীন, পরিবর্তিত, সংযুক্ত, মোছা এবং মঞ্চযুক্ত ফাইলগুলি দেখায়। এটি রিমোটগুলিতে এবং নিমজ্জিত স্থানীয় কমিটগুলিতে নিমজ্জনিত কমিটগুলি দেখিয়ে দূরবর্তীগুলির সাথে পার্থক্য করে। এটি সংক্ষিপ্ত বিবরণ বা বিস্তারিত মোড এবং এমনকি এইচটিএমএল রঙের কোডেড ফলাফলগুলিও প্রদর্শন করতে পারে। এটি সন্ধানের পরিবর্তে অবস্থান নির্ধারণ করে কারণ এটি অসীম দ্রুততর এবং এমনকি যদি এটি খুব পুরানো হয়ে থাকে তবে আপনার অবস্থান ডেটাবেস আপডেট করার অনুরোধ জানাবে।


4
আপনার উত্তর পোস্ট করার জন্য ধন্যবাদ! দয়া করে স্ব-প্রচারের এফএকিউ অবশ্যই মনোযোগ সহকারে পড়তে ভুলবেন না । এছাড়াও নোট করুন যে প্রতিবার আপনার নিজের সাইট / পণ্যের সাথে লিঙ্ক করার পরে আপনাকে একটি অস্বীকার পোস্ট করা আবশ্যক
অ্যান্ড্রু বারবার

4
দুর্ভাগ্যক্রমে, গিথুব wwjamieson3 / envisionTools লিঙ্কটি ভেঙে গেছে।
ব্রেন্ডা জে বাটলার

@ উইলিয়ামাম জ্যামিসন কল্পনা করেছেন কি একটি ব্যক্তিগত গিটহাবের সংগ্রহশালা?
eebbesen

-5

দেখে মনে হচ্ছে কোনও স্ক্রিপ্ট লিখে এটি করা বেশ সহজ। মূলত এটি সংগ্রহস্থলগুলির উপর পুনরাবৃত্তি করতে হবে এবং তার পরে গিট এলএস-ফাইল, গিট ডিফ এবং গিট লগের মতো কমান্ড ব্যবহার করতে হবে।


আমি জানি দেরি হয়ে গেছে, তবে আপনি কি স্ক্রিপ্ট প্রকাশ করতে পারবেন?
l0b0

কোনও "স্ক্রিপ্ট" নেই। আমি আমার নিজের প্রয়োজনের জন্য লিখেছি এমন একটি স্ক্রিপ্ট ব্যবহার করছি, তবে এটি জেনেরিক নয়।
iny

"গিট ডিফ" আসলেই মুশকিল, যদি আপনি একটি একক ডিফ ফাইল পেতে চান যা একটি একক প্যাচ কমান্ডের সাথে উল্টানো এবং পুনরায় প্রয়োগ করা যায়।
পেশাদাররা

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