Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

गिट के लिए 6 आसान बैश स्क्रिप्ट

जब मैं Git रिपॉजिटरी के साथ काम कर रहा होता हूं, तो मैंने बैश स्क्रिप्ट का एक गुच्छा लिखा है जो मेरे जीवन को आसान बनाता है। मेरे कई सहयोगियों का कहना है कि इसकी कोई आवश्यकता नहीं है; मुझे जो कुछ भी करने की ज़रूरत है वह गिट कमांड के साथ किया जा सकता है। हालांकि यह सच हो सकता है, मैं जो चाहता हूं उसे करने के लिए उपयुक्त गिट कमांड को समझने की कोशिश करने से मुझे स्क्रिप्ट असीम रूप से अधिक सुविधाजनक लगती है।

1. gitlog

गिटलॉग मास्टर संस्करण के खिलाफ मौजूदा पैच की एक संक्षिप्त सूची प्रिंट करता है। यह उन्हें सबसे पुराने से नवीनतम तक प्रिंट करता है और H . के साथ लेखक और विवरण दिखाता है सिर . के लिए , ^ सिर^ . के लिए , 2 HEAD~2, . के लिए इत्यादि। उदाहरण के लिए:

$ gitlog
--------------------------[वसूली25]--------------- --------
(snip)
11 340d27a33895 बॉब पीटरसन     gfs2:io त्रुटियों के बाद ail2 सूची को हटा दें
10 9b3c4e6efb10 बॉब पीटरसन     gfs2:gfs2_create_inode में iopen glock मेस को साफ करें
 9 d2e8c22be39b बॉब पीटरसन     gfs2:ग्लोप्स के go_sync परिवार के लिए उचित त्रुटि जाँच करें
 8 9563e31f8bfd क्रिस्टोफ़ हेलविग gfs2:gfs2 में पेज_ऑफ़सेट का उपयोग करें br /> 6 f703a3c27874 एंड्रियास ग्रुएनबैकर gfs2:एमएमएपी राइट बनाम पंच_होल स्थिरता में सुधार करें
 5 a3e86d2ef30e एंड्रियास ग्रुएनबैकर gfs2:gfs2_page_mkwrite में मल्टी-ब्लॉक आवंटन gfs2_page_mkwrite
 3 4525c2f5b46f बॉब पीटरसन     राफेल एक्विनी का स्लैब इंस्ट्रूमेंटेशन
 2 a06a5b7dea02 बॉब पीटरसन     GFS2:gl_ops में go_get_holdtime जोड़ें
 ^ 8ba93c796d5c बॉब पीटरसन     gfs2:नए फ़ंक्शन शेष_होल्ड_टाइम का परिचय दें और इसे dq
 H e8b5ff851bb9 बॉब पीटरसन     gfs2 में उपयोग करें:rgrps को न्यूनतम होल्ड समय दें

अगर मैं देखना चाहता हूं कि एक अलग शाखा पर कौन से पैच हैं, तो मैं एक वैकल्पिक शाखा निर्दिष्ट कर सकता हूं:

$ gitlog recovery24 

2. gitlog.id

gitlog.id बस पैच SHA1 आईडी प्रिंट करता है:

$ gitlog.id
-------------------------- [रिकवरी25 ]--------------- ----------
56908eeb6940 2ca4a6b628a1 fc64ad5d99fe 02031a00a251 f6f38da7dd18 d8546e8f0023 fc3cc1f98f6b 12c3e0cb3523 76cce178b134 6fc1dce3ab9c 1b681ab074ca 26fed8de719b 802ff51a5670 49f67a512d8c f04f20193bbb 5f6afe809d23 2030521dc70e dada79b3be94 9b19a1e08161 78a035041d3e f03da011cae2 0d2b2e068fcd 2449976aa133 57dfb5e12ccd 53abedfdcf72 6fbdda3474b3 49544a547188 187032f7a63c 6f75dae23d93 95fc2a261b00 ebfb14ded191 f653ee9e414a 0e2911cb8111 73968b76e2e3 8a3e4cb5e92c a5f2da803b5b 7c9ef68388ed 71ca19d0cba8 340d27a33895 9b3c4e6efb10 d2e8c22be39b 9563e31f8bfd ebac7a38036c f703a3c27874 a3e86d2ef30e da3c60479655b0 4525c2b5f5de46b

फिर से, यह वर्तमान शाखा मानता है, लेकिन यदि मैं चाहूं तो मैं एक अलग शाखा निर्दिष्ट कर सकता हूं।

3. gitlog.id2

gitlog.id2 gitlog.id . जैसा ही है लेकिन शीर्ष पर शाखा रेखा के बिना। यह एक शाखा से वर्तमान शाखा तक सभी पैच को चेरी-पिकिंग के लिए आसान है:

$ # एक नई शाखा बनाएं
$ git branch --track origin/master
$ # मेरे द्वारा अभी बनाई गई नई शाखा देखें
$ git checkout Recovery26
$ # `gitlog.id2 Recovery25` में i के लिए पुरानी शाखा से नई शाखा में सभी पैच चुनें
$; git चेरी-पिक $i करें; किया

4. gitlog.grep

gitlog.grep पैच के उस संग्रह के भीतर एक स्ट्रिंग के लिए greps। उदाहरण के लिए, यदि मुझे कोई बग मिलती है और मैं उस पैच को ठीक करना चाहता हूं जिसमें inode_go_sync कार्य करने का संदर्भ है , मैं बस यही करता हूँ:

$ gitlog.grep inode_go_sync
--------------------------[रिकवरी25 - 50 पैच]-------- --------------
(snip)
11 340d27a33895 बॉब पीटरसन     gfs2:io त्रुटियों के बाद ail2 सूची को हटा दें
10 9b3c4e6efb10 बॉब पीटरसन     gfs2:क्लीन अप gfs2_create_inode
 9 d2e8c22be39b बॉब पीटरसन     gfs2 में iopen glock मेस:ग्लॉप्स के go_sync परिवार के लिए उचित त्रुटि जाँच करें
152:-static void inode_go_sync(struct gfs2_glock *gl)
153:+static int int (स्ट्रक्चर gfs2_glock *gl)
163:@@ -296,6 +302,7 @@ स्थिर शून्य inode_go_sync(struct gfs2_glock *gl)
 8 9563e31f8bfd क्रिस्टोफ़ हेलविग gfs2:gfs2_page /_mkwrite में पेज_ऑफ़सेट का उपयोग करें
 7 ebac7a38036c क्रिस्टोफ़ हेलविग gfs2:gfs2_allocate_page_backing
 6 f703a3c27874 में बफ़र_हेड्स का उपयोग न करें:एंड्रियास ग्रुएनबैकर gfs2:एमएमएपी राइट बनाम पंच_होल स्थिरता में सुधार करें
 5 a3e86d2_ef30e एंड्रियास gfs में बफर_हेड का उपयोग करें।> 4 da3c604755b0 एंड्रियास ग्रुएनबैकर gfs2:F ix gfs2_page_mkwrite
 3 4525c2f5b46f बॉब पीटरसन     राफेल एक्विनी के स्लैब इंस्ट्रूमेंटेशन में एंड-ऑफ़-फ़ाइल हैंडलिंग
 2 a06a5b7dea02 बॉब पीटरसन     GFS2:gl_ops में go_get_होल्डटाइम जोड़ें  93 और नया बॉब 796dc जोड़ें. इसे dq में उपयोग करें
 H e8b5ff851bb9 बॉब पीटरसन     gfs2:rgrps को न्यूनतम होल्ड टाइम की अनुमति दें

तो, अब मुझे पता है कि पैच HEAD~9 वह है जिसे ठीक करने की आवश्यकता है। मैं git rebase -i HEAD~10 . का उपयोग करता हूं पैच 9 को संपादित करने के लिए, गिट कमिट-ए --amend , फिर git rebase --continue आवश्यक समायोजन करने के लिए।

5. gitbranchcmp3

gitbranchcmp3 मुझे अपनी वर्तमान शाखा की तुलना किसी अन्य शाखा से करने देता है, इसलिए मैं पैच के पुराने संस्करणों की तुलना अपने नए संस्करणों से कर सकता हूं और जल्दी से देख सकता हूं कि क्या बदला है और क्या नहीं। यह उन पैच की तुलना करने के लिए एक तुलना स्क्रिप्ट उत्पन्न करता है (जो केडीई टूल कॉम्पारे का उपयोग करता है, जो गनोम 3 पर भी काम करता है)। यदि पंक्ति संख्याओं के अलावा कोई अंतर नहीं है, तो यह [समान] . प्रिंट करता है . यदि केवल टिप्पणी अंतर हैं, तो यह [समान] . प्रिंट करता है (निचले मामले में)। उदाहरण के लिए:

$ gitbranchcmp3 पुनर्प्राप्ति24
शाखा पुनर्प्राप्ति24 में 47 पैच हैं
शाखा पुनर्प्राप्ति25 में 50 पैच हैं

(snip)
38 87eb6901607a 340d27a33895 [वही] gfs2:ail2 को हटा दें io त्रुटियों के बाद सूची
39 90fefb577a26 9b3c4e6efb10 [वही] gfs2:gfs2_create_inode में iopen glock मेस को साफ़ करें
40 ba3ae06b8b0e d2e8c22be39b [समान] gfs2:go_sync के लिए ग्लॉप्स का उचित त्रुटि जाँच करें 9563e31f8bfd [समान] gfs2:gfs2_page_mkwrite में पेज_ऑफ़सेट का उपयोग करें
42 0adc6d817b7a ebac7a38036c [समान] gfs2:gfs2_allocate_page_backing
43 में बेहतर करें />44 de57c2f72570 a3e86d2ef30e [समान] gfs2:gfs2_page_mkwrite में मल्टी-ब्लॉक आवंटन
45 7c5305fbd68a da3c604755b0 [समान] gfs2:gfs2_page_mkराइट में एंड-ऑफ-फाइल हैंडलिंग को ठीक करें gfs2_page_mkराइट इंस्ट्रूमेंटेशन
47              a06a5b7dea02 [   ] GFS2:go_get जोड़ें _होल्डटाइम से gl_ops
48              8ba93c796d5c [    ] gfs2:नए फ़ंक्शन शेष_होल्ड_टाइम का परिचय दें और इसे dq में उपयोग करें
49             r        e8b5ff851bb9 [ brs                     8ba93c796d5c [   ] gfs2:पुनर्प्राप्ति25:
अनुपलब्ध:
इस पर उत्पन्न स्क्रिप्ट की तुलना करें:/tmp/compare_mismatches.sh

6. gitlog.ढूंढें

अंत में, मेरे पास gitlog.find है , मेरे पैच के अपस्ट्रीम संस्करण कहां हैं और प्रत्येक पैच की वर्तमान स्थिति की पहचान करने में मेरी सहायता करने के लिए एक स्क्रिप्ट। यह पैच विवरण से मेल करके ऐसा करता है। यह वर्तमान पैच की तुलना अपस्ट्रीम समकक्ष से करने के लिए एक तुलना स्क्रिप्ट (फिर से, कोम्पारे का उपयोग करके) उत्पन्न करता है:

$ gitlog.find
-------------------------- [रिकवरी25 - 50 पैच]---------- -------------
(snip)
11 340d27a33895 बॉब पीटरसन     gfs2:io त्रुटियों के बाद ail2 सूची को ड्रेन करें
लो 5bcb9be74b2a बॉब पीटरसन     gfs2:ail2 को ड्रेन करें io त्रुटियों के बाद सूची
10 9b3c4e6efb10 बॉब पीटरसन     gfs2:gfs2_create_inode में iopen glock मेस को साफ़ करें
fn 2c47c1be51fb बॉब पीटरसन     gfs2:उचित gfs2_create_inode 2 में iopen glock मेस को साफ़ करें। ग्लॉप्स के go_sync परिवार के लिए त्रुटि जाँच
lo feb7ea639472 बॉब पीटरसन     gfs2:go_sync ग्लॉप्स के परिवार के लिए उचित त्रुटि जाँच करें
 8 9563e31f8bfd क्रिस्टोफ़ हेलविग gfs2:gfs2_page_mkwrite में पेज_ऑफ़सेट का उपयोग करें। gfs2_page_mkwrite
 7 ebac7a38036c क्रिस्टोफ़ हेलविग gfs2 में पेज_ऑफ़सेट का उपयोग करें:gfs2_allocate_page_backing
ms 35af80aef99b क्रिस्टोफ़ हेलविग gfs2 में बफ़र_हेड का उपयोग न करें:gfs2 में बफ़र_हेड का उपयोग न करें cking
 6 f703a3c27874 एंड्रियास ग्रुएनबैकर gfs2:एमएमएपी राइट बनाम पंच_होल स्थिरता में सुधार करें
fn 39c3a948ecf6 एंड्रियास ग्रुएनबैकर gfs2:एमएमएपी राइट बनाम पंच_होल स्थिरता में सुधार करें
 5 a3e86d2ef30e एंड्रियास जीएफ में 5 ए3e86d2ef30e आवंटन gfs2_page_mkwrite
fn f53056c43063 एंड्रियास ग्रुएनबैकर gfs2:gfs2_page_mkwrite
 4 में मल्टी-ब्लॉक आवंटन -gfs2_page_mkwrite
 3 4525c2f5b46f बॉब पीटरसन     राफेल एक्विनी का स्लैब इंस्ट्रुमेंटेशन
   अपस्ट्रीम में नहीं मिला
 2 a06a5b7dea02 बॉब पीटरसन   में फ़ाइल प्रबंधन   GFS2:नहीं मिला   GFS2:जोड़ें  ^^^अपस्ट्रीम
 ग्ल_ऑप्स में जोड़ें
8ba93c796d5c बॉब पीटरसन     gfs2:नए फ़ंक्शन शेष_होल्ड_टाइम का परिचय दें और इसे dq में उपयोग करें
   अपस्ट्रीम नहीं मिला
 H e8b5ff851bb9 बॉब पीटरसन     gfs2:rgrps को न्यूनतम होल्ड समय रखने दें
   नहीं मिला स्ट्रीम
जनरेट की गई स्क्रिप्ट की तुलना करें:/tmp/compare_upstream.sh

पैच दो पंक्तियों में दिखाए जाते हैं, जिनमें से पहला आपका वर्तमान पैच है, उसके बाद संबंधित अपस्ट्रीम पैच, और इसकी अपस्ट्रीम स्थिति को इंगित करने के लिए 2-वर्ण का संक्षिप्त नाम:

  • लो इसका मतलब है कि पैच केवल स्थानीय अपस्ट्रीम गिट रेपो में है (यानी, अभी तक अपस्ट्रीम पुश नहीं किया गया है)।
  • एमएस इसका मतलब है कि पैच लिनुस टोरवाल्ड की मास्टर शाखा में है।
  • fn इसका मतलब है कि पैच को मेरी "अगली के लिए" विकास शाखा में धकेल दिया गया है, जिसका उद्देश्य अगली अपस्ट्रीम मर्ज विंडो के लिए है।

मेरी कुछ स्क्रिप्ट इस आधार पर धारणाएँ बनाती हैं कि मैं सामान्य रूप से Git के साथ कैसे काम करता हूँ। उदाहरण के लिए, अपस्ट्रीम पैच की खोज करते समय, यह मेरे प्रसिद्ध गिट ट्री के स्थान का उपयोग करता है। इसलिए, आपको अपनी परिस्थितियों के अनुरूप उन्हें समायोजित या सुधारने की आवश्यकता होगी। gitlog.find स्क्रिप्ट को केवल GFS2 और DLM पैच का पता लगाने के लिए डिज़ाइन किया गया है, इसलिए जब तक कि आप GFS2 डेवलपर नहीं हैं, आप इसे अपनी रुचि के घटकों के अनुसार अनुकूलित करना चाहेंगे।

सोर्स कोड

इन लिपियों का स्रोत यहां दिया गया है।

1. गिटलॉग

#!/bin/bash
branch=$1

अगर टेस्ट "x$branch" =x; तब
   शाखा=`गिट शाखा-ए | ग्रेप "*" | cut -d '' -f2`
fi

patches=0
tracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u }`

LIST=`git log --reverse --abbrev-commit --pretty=oneline $tracking..$branch | कट -d '' -f1 |paste -s -d '' `
for i in $LIST; do पैच=$(echo $patches + 1 | bc); किया

अगर [[ $branch =~ .*for-next.* ]]
फिर
    start=HEAD
#    start=origin/for-next
else
    start=origin/master
fi

tracking=`git rev-parse --abbrev -ref --प्रतीकात्मक-पूर्ण-नाम @{u}`

/usr/bin/echo "--------------------- --[" $branch "]--------------------------"
पैच=$(गूंज $पैच - 1 | बीसी);
for i $LIST में; करो
    अगर [ $patches -eq 1 ]; तब
        cnt=" ^"
    elif [ $patches -eq 0 ]; तब
        cnt=" H"
   अन्य
       अगर [ $patches -lt 10 ]; फिर
          cnt=" $patches"
      और
          cnt="$patches"
      Fi
    fi
    /usr/bin/git शो --ab -commit -s --pretty=format:"$cnt %h %<|(32)%an %s %n" $i
   patches=$(echo $patches - 1 | bc)
किया
#git log --reverse --abbrev-commit --pretty=format:"%h %<|(32)%an %s" $tracking..$branch
#git log - -reverse --abbrev-commit --pretty=format:"%h %<|(32)%an %s" ^origin/master ^linux-gfs2/for-next $branch

2. gitlog.id

#!/bin/bash
branch=$1

अगर टेस्ट "x$branch" =x; तब
   शाखा=`गिट शाखा-ए | ग्रेप "*" | कट-डी ' ' -f2`
fi

tracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`

/usr/bin/echo "--------------------------[" $branch "]--------------- ------------"
git log --reverse --abbrev-commit --pretty=oneline $tracking..$branch | कट -d '' -f1 |पेस्ट -s -d ''

3. gitlog.id2

#!/bin/bash
branch=$1

अगर टेस्ट "x$branch" =x; तब
   शाखा=`गिट शाखा-ए | ग्रेप "*" | cut -d '' -f2`
fi

tracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`
git लॉग --reverse --abbrev-commit --pretty=oneline $tracking..$branch | कट -d '' -f1 |पेस्ट -s -d ''

4. gitlog.grep

#!/bin/bash
param1=$1
param2=$2

अगर टेस्ट "x$param2" =x; तब
   शाखा=`गिट शाखा-ए | ग्रेप "*" | कट-डी '' -f2`
    string=$param1
else
   शाखा=$param1
    string=$param2
fi

पैच =0
tracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`

LIST=`git log --reverse --abbrev -commit --pretty=online $tracking..$branch | कट -d '' -f1 |paste -s -d '' `
for i in $LIST; do पैच=$(echo $patches + 1 | bc); किया
/usr/bin/echo "----------------------[ " $branch "-" $patches "patches ]--------------------------"
patches=$(echo $patches - 1 | bc );
के लिए मैं $LIST में; करो
    अगर [ $patches -eq 1 ]; तब
        cnt=" ^"
    elif [ $patches -eq 0 ]; तब
        cnt=" H"
   अन्य
       अगर [ $patches -lt 10 ]; फिर
          cnt=" $patches"
      और
          cnt="$patches"
      Fi
    fi
    /usr/bin/git शो --ab -commit -s --pretty=format:"$cnt %h %<|(32)%an %s" $i
      /usr/bin/git show --pretty=email --patch-with- स्टेट $i | grep -n "$string"
   patches=$(echo $patches - 1 | bc)
किया गया

5. gitbranchcmp3

#!/bin/bash
#
# gitbranchcmp3 <पुरानी शाखा> []
#
oldbranch=$1
newbranch=$2
script=/tmp/compare_mismatches.sh

/usr/bin/rm -f $script
echo "#!/bin/bash"> $script
/usr /bin/chmod 755 $script
echo "# gitbranchcmp3.sh द्वारा उत्पन्न">> $script
echo "# बेमेल पैच की तुलना करने के लिए इस स्क्रिप्ट को चलाएं">> $script
echo " ">> $script
echo "function compare_them()">> $script
echo "{"  >> $script
echo "   git show --pretty=email --patch-with -स्टेट \$1> /tmp/gronk1">> $script
echo "    git show --pretty=email --patch-with-stat \$2> /tmp/gronk2">> $script
इको "    kompare /tmp/gronk1 /tmp/gronk2">> $script
echo "}">> $script
echo " ">> $script

if test " x$newbranch" =x; तब
    newbranch=`git branch -a | ग्रेप "*" | कट-डी ' ' -f2`
fi

tracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`

घोषित -a oldsha1s=(`git log --reverse --abbrev-commit --pretty=oneline $tracking..$oldbranch | cut -d '' -f1 |paste -s -d '' '')
घोषणा -a newsha1s=(`git log --reverse --abbrev-commit --pretty=online $tracking..$newbranch | cut -d '' -f1 |paste -s -d '' '')

#echo "old:" $oldsha1s
oldcount=${#oldsha1s[@]}
echo "शाखा $oldbranch में $oldcount पैच हैं"
oldcount=$ (गूंज $oldcount - 1 | bc)
#for o `seq 0 ${#oldsha1s[@]}` में; do
#    echo -n ${oldsha1s[$o]} " "
#    desc=`git show $i | सिर -5 | पूंछ -1|कट-बी5-`
# किया

#echo "नया:" $newsha1s
newcount=${#newsha1s[@]}
echo "शाखा $newbranch में $newcount पैच हैं"
newcount=$(echo $newcount - 1 | bc)
#for o in `seq 0 ${#newsha1s[@]}`; do
#    echo -n ${newsha1s[$o]} " "
#    desc=`git show $i | सिर -5 | पूंछ -1|कट-बी5-`
#done
echo

`seq 0 $newcount` में नए के लिए; do
    newsha=${newsha1s[$new]}
    newdesc=`git show $newsha | सिर -5 | टेल -1|कट-बी5-`
    oldsha="            "
    वही="[   ]"
    `seq 0 $oldcount` में पुराने के लिए; do
        if test "${oldsha1s[$old]}" ="match"; तब
          जारी रखें;
        fi
        olddesc=`git शो ${oldsha1s[$old]} | सिर -5 | पूंछ -1|कट-बी5-`
       अगर परीक्षण "$olddesc" ="$newdesc"; फिर
          Oldsha=${oldsha1s[$old]}
            #echo $oldsha
          git show $oldsha |tail -n +2 |grep -v "index.*\.\।" |grep -v "@@"> /tmp/gronk1
          git शो $newsha |tail -n +2 |grep -v "index.*\.\।" |grep -v "@@"  > /tmp/gronk2
            diff /tmp/gronk1 /tmp/gronk2 &> /dev/null
            अगर [$? -ईक 0 ];फिर
# कोई मतभेद नहीं
              वही="[समान]"
                Oldsha1s[$old]="match"
               ब्रेक        
 >            git शो $oldsha |sed -n '/diff/,$p' |grep -v "index.*\.\." |grep -v "@@"> /tmp/gronk1
          git शो $newsha |sed -n '/diff/,$p' |grep -v "index.*\.\." |grep -v "@@"> /tmp/gronk2
            diff /tmp/gronk1 /tmp/gronk2 &> /dev/null
            अगर [ $? -ईक 0 ];तब
# टिप्पणियों में अंतर केवल
              वही="[समान]"
              Oldsha1s[$old]="match"
                 ब्रेक  
            oldsha1s[$old]="match"
           echo "compare_them $oldsha $newsha">> $script
      Fi
    किया हुआ
    इको "$new $oldsha $newsha $same $newdesc"
किया गया
`seq 0 $oldcount` में पुराने के लिए
का मिलान नहीं हुआ है; do
    यदि परीक्षण ${oldsha1s[$old]} !="मिलान"; तब
        olddesc=`git शो ${oldsha1s[$old]} | सिर -5 | टेल -1|कट -बी5-`
      इको "${oldsha1s[$old]} $olddesc"
      the_missing=`echo "$the_missing ${oldsha1s[$old]}"`
    फाई
किया गया

echo "द मिसिंग:" $the_missing
echo "इस पर जेनरेट की गई स्क्रिप्ट की तुलना करें:$script"
#git log --reverse --abbrev -commit --pretty=online $tracking..$branch | कट -d '' -f1 |पेस्ट -s -d ''

6. gitlog.ढूंढें

#!/bin/bash
#
# अपस्ट्रीम समकक्ष पैच ढूंढें
#
# gitlog.find
#
cwd=$PWD
param1=$1
ubranch=$2
patches=0
script=/tmp/compare_upstream.sh
echo "#!/bin/bash"> $script
/usr/bin/chmod 755 $script
echo "# gitbranchcmp3.sh द्वारा जेनरेट किया गया">> $script
echo "# बेमेल पैच की तुलना करने के लिए इस स्क्रिप्ट को चलाएं">> $script
echo " ">> $script
echo "function compare_them()">> $script
echo "{"  >> $script
echo "    cwd=$PWD">> $script
echo "    git show --pretty=email --patch-with-stat \$2> /tmp/gronk2">> $script
echo "    cd ~/linux.git/fs/gfs2 ">> $script
echo "    git show --pretty=email --patch-with-stat \$1> /tmp/gronk1">> $script
echo "    cd $cwd">> $ स्क्रिप्ट
echo "    kompare /tmp/gronk1 /tmp/gronk2">> $script
echo "}">> $script
echo " ">> $script

#echo "अपस्ट्रीम पैच जानकारी एकत्रित करना। कृपया प्रतीक्षा करें।"
branch=`git branch -a | ग्रेप "*" | कट-डी '' -f2`
tracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`

cd ~/linux.git
यदि परीक्षण "X${ubranch}" ="X"; तब
    ubranch=`git branch -a | ग्रेप "*" | कट-डी '' -f2`
fi
utracking=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`
#
# मास्टर से gfs2 पैच की एक सूची इकट्ठा करें, अगर हम इसे नहीं ढूंढ पाते हैं
#
#git log --abbrev-commit --pretty=format:"   %h %<|(32) %an %s" मास्टर |grep -i -e "gfs2" -e "dlm"> /tmp/gronk
git log --reverse --abbrev-commit --pretty=format:"ms %h % <|(32)%an %s" मास्टर fs/gfs2/> /tmp/gronk.gfs2
# ms =लिनुस के मास्टर में
git log --reverse --abbrev-commit --pretty=प्रारूप:"ms %h %<|(32)%an %s" मास्टर fs/dlm/> /tmp/gronk.dlm

cd $cwd
LIST=`git log - -रिवर्स --abbrev-commit --pretty=oneline $tracking..$branch | कट -d '' -f1 |paste -s -d '' `
for i in $LIST; do पैच=$(echo $patches + 1 | bc); किया
/usr/bin/echo "----------------------[ " $branch "-" $patches "patches ]--------------------------"
patches=$(echo $patches - 1 | bc );
के लिए मैं $LIST में; करो
    अगर [ $patches -eq 1 ]; तब
        cnt=" ^"
    elif [ $patches -eq 0 ]; तब
        cnt=" H"
   अन्य
       अगर [ $patches -lt 10 ]; फिर
          cnt=" $patches"
      और
          cnt="$patches"
      Fi
    fi
    /usr/bin/git शो --ab -commit -s --pretty=format:"$cnt %h %<|(32)%an %s" $i
    desc=`/usr/bin/git show --abbrev-commit -s - -pretty=format:"%s" $i`
    cd ~/linux.git
    cmp=1
    up_eq=`git log --reverse --abbrev-commit --pretty=प्रारूप:"lo %h %<|(32)%an %s" $utracking..$ubranch | grep "$desc"`
# lo =लोकल फॉर-नेक्स्ट में
    अगर टेस्ट "X$up_eq" ="X"; तब
        up_eq=`git log --reverse --abbrev-commit --pretty=format:"fn %h %<|(32)%an %s" Master..$utracking | grep "$desc"`
# fn =इन अगली मर्ज विंडो के लिए
       अगर परीक्षण "X$up_eq" ="X"; तब
            up_eq=`grep "$desc" /tmp/gronk.gfs2`
            यदि परीक्षण "X$up_eq" ="X"; फिर
              up_eq=`grep "$desc" /tmp/gronk.dlm`
                अगर परीक्षण "X$up_eq" ="X"; तब
                  up_eq="   अपस्ट्रीम नहीं मिला"
                    cmp=0
                Fi
          Fi
            Fi
                      up_eq="                         फाई
          फाई
/>    अगर [ $cmp -eq 1 ]; फिर
        UP_SHA1=`echo $up_eq|cut -d' ' -f2`
        echo "compare_them $UP_SHA1 $i">> $script
    fi
    cd $cwd
   patches=$(echo $patches - 1 | bc)
किया
इको "जेनरेट की गई स्क्रिप्ट की तुलना करें:$script"


  1. गिट बैश से विंडोज़ पर सब्लिमे टेक्स्ट कैसे लॉन्च करें

    यदि आप अपने गिट बैश से सब्लिमे टेक्स्ट एडिटर को खोलने का तरीका जानने का प्रयास कर रहे हैं, तो आप भाग्य में हैं। यह लेख आपको कम या बिना किसी तनाव के प्रक्रिया के माध्यम से मार्गदर्शन करेगा। मुझे यह पता लगाने में थोड़ा समय लगा कि यह कैसे किया जाता है, लेकिन अब मैं उस ज्ञान को इस लेख में आप सभी के सा

  1. बैश-इट - बैश फ्रेमवर्क आपकी लिपियों और उपनामों को नियंत्रित करने के लिए

    बैश-इट बैश 3.2+ . के लिए समुदाय बैश कमांड और स्क्रिप्ट का एक बंडल है , जो स्वतः पूर्णता, थीम, उपनाम, कस्टम फ़ंक्शन, और बहुत कुछ के साथ आता है। यह आपके दैनिक कार्य के लिए शेल स्क्रिप्ट और कस्टम कमांड के विकास, रखरखाव और उपयोग के लिए एक उपयोगी ढांचा प्रदान करता है। यदि आप दैनिक आधार पर बैश शेल का उपय

  1. लिनक्स में प्रभावी बैश स्क्रिप्ट लिखने के लिए 10 उपयोगी टिप्स

    शेल स्क्रिप्टिंग प्रोग्रामिंग का सबसे आसान रूप है जिसे आप लिनक्स में सीख सकते हैं/कर सकते हैं। इसके अलावा, यह सिस्टम प्रशासन के लिए कार्यों को स्वचालित करने, नई सरल उपयोगिताओं/उपकरणों को विकसित करने के लिए एक आवश्यक कौशल है, लेकिन कुछ का उल्लेख करने के लिए। इस लेख में, हम प्रभावी और विश्वसनीय बैश स