Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

6 tập lệnh Bash tiện dụng cho Git

Tôi đã viết một loạt các tập lệnh Bash giúp cuộc sống của tôi dễ dàng hơn khi tôi làm việc với các kho lưu trữ Git. Nhiều đồng nghiệp của tôi nói rằng không cần thiết; rằng mọi thứ tôi cần làm đều có thể được thực hiện bằng các lệnh Git. Mặc dù điều đó có thể đúng, nhưng tôi thấy các tập lệnh vô cùng tiện lợi hơn là cố gắng tìm ra lệnh Git thích hợp để thực hiện những gì tôi muốn.

1. gitlog

gitlog in danh sách viết tắt của các bản vá hiện tại so với phiên bản chính. Nó in chúng từ cũ nhất đến mới nhất và hiển thị tác giả và mô tả, với H cho HEAD , ^ cho HEAD ^ , 2 cho HEAD ~ 2, và kể từ đó trở đi. Ví dụ:

 $ gitlog 
----------------------- [recovery25] --------------- --------
(snip)
11 340d27a33895 Bob Peterson gfs2:thoát danh sách ail2 sau lỗi io
10 9b3c4e6efb10 Bob Peterson gfs2:dọn dẹp mớ hỗn độn iopen trên gfs2_create_inode
9 d2e8c22be39b Bob Peterson gfs2:Kiểm tra lỗi thích hợp cho họ go_sync của glops
8 9563e31f8bfd Christoph Hellwig gfs2:sử dụng page_offset trong gfs2_page_mkwrite
7 ebac7a_sync của glops
8 9563e31f8bfd Christoph Hellwig gfs2:không sử dụng page_offset trong gfs2_page_mkwrite
7 ebac7a38036c Christoph Hellwig g_allocate trong gpagefs2_backingheads br /> 6 f703a3c27874 Andreas Gruenbacher gfs2:Cải thiện tính năng ghi mmap so với tính nhất quán của punch_hole
5 a3e86d2ef30e Andreas Gruenbacher gfs2:Phân bổ nhiều khối trong gfs2_page_mkwrite
4 da3c604755b0 Andreas Gruenbacher xử lý trong gfs-end-of gfs2_page_mkwrite
3 4525c2f5b46f Thiết bị đo đạc bản sàn của Bob Peterson Rafael Aquini
2 a06a5b7dea02 Bob Peterson GFS2:Thêm go_get_holdtime vào gl_ops
^ 8ba93c796d5c Bob Peterson gfs2:giới thiệu hàm mới còn lại_hold_time và sử dụng nó trong dq
H e8b5ff851bb9 Bob Peterson gfs2:Cho phép rgrps có thời gian lưu giữ tối thiểu

Nếu tôi muốn xem những bản vá nào nằm trên một nhánh khác, tôi có thể chỉ định một nhánh thay thế:

 $ gitlog recovery24 

2. gitlog.id

gitlog.id chỉ in ID SHA1 vá:

 $ gitlog.id 
----------------------- [recovery25] ------------- ----------
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 da3c604755b0 4525c2bf5 8b46b7c0455d5d5b851bb9bb95d5b46f abb9796d5b46f abb

Một lần nữa, nó giả định là nhánh hiện tại, nhưng tôi có thể chỉ định một nhánh khác nếu tôi muốn.

3. gitlog.id2

gitlog.id2 giống với gitlog.id nhưng không có đường nhánh ở trên cùng. Điều này rất tiện lợi cho việc chọn tất cả các bản vá lỗi từ một nhánh đến nhánh hiện tại:

 $ # tạo chi nhánh mới 
$ git branch --track origin / master
$ # kiểm tra chi nhánh mới mà tôi vừa tạo
$ git checkout recovery26
$ # cherry-chọn tất cả các bản vá từ nhánh cũ đến nhánh mới
$ cho tôi trong `gitlog.id2 recovery25`; làm git cherry-pick $ i; xong rồi

4. gitlog.grep

gitlog.grep greps cho một chuỗi trong bộ sưu tập các bản vá lỗi đó. Ví dụ:nếu tôi tìm thấy lỗi và muốn sửa bản vá có tham chiếu đến hàm inode_go_sync , Tôi chỉ đơn giản làm:

 $ gitlog.grep inode_go_sync 
----------------------- [recovery25 - 50 bản vá] --------- --------------
(snip)
11 340d27a33895 Bob Peterson gfs2:thoát danh sách ail2 sau lỗi io
10 9b3c4e6efb10 Bob Peterson gfs2:dọn dẹp iopen glock mess trong gfs2_create_inode
9 d2e8c22be39b Bob Peterson gfs2:Kiểm tra lỗi thích hợp cho họ go_sync của glops
152:-static void inode_go_sync (struct gfs2_glock * gl)
153:+ static int inode_go_sync (struct gfs2_glock * gl)
163:@@ -296,6 +302,7 @@ static void inode_go_sync (struct gfs2_glock * gl)
8 9563e31f8bfd Christoph Hellwig gfs2:sử dụng page_offset trong gfs2_page_mkwrite
7 ebac7a38036c Christoph Hellwig gfs2:không sử dụng buffer_heads trong gfs2_allocate_page_backing
6 f703a3c27874 Andreas Gruenbacher gfs2:Cải thiện tính nhất quán của mmap write so với punch_hole.> 4 da3c604755b0 Andreas Gruenbacher gfs2:F xử lý ix end-of-file trong gfs2_page_mkwrite
3 4525c2f5b46f Thiết bị đo đạc bản của Bob Peterson Rafael Aquini
2 a06a5b7dea02 Bob Peterson GFS2:Thêm go_get_holdtime vào gl_ops
^ 8ba93c796d5c Bob Pettime function and left_hold_time sử dụng nó trong dq
H e8b5ff851bb9 Bob Peterson gfs2:Cho phép rgrps có thời gian lưu giữ tối thiểu

Vì vậy, bây giờ tôi biết rằng bản vá HEAD ~ 9 là một trong những cần sửa chữa. Tôi sử dụng git rebase -i HEAD ~ 10 để chỉnh sửa bản vá 9, git commit -a --amend , rồi đến git rebase --continue để thực hiện các điều chỉnh cần thiết.

5. gitbranchcmp3

gitbranchcmp3 cho phép tôi so sánh chi nhánh hiện tại của mình với một chi nhánh khác, vì vậy tôi có thể so sánh các phiên bản vá lỗi cũ hơn với các phiên bản mới hơn của mình và nhanh chóng xem những gì đã thay đổi và những gì chưa. Nó tạo ra một script so sánh (sử dụng công cụ KDE Kompare, cũng hoạt động trên GNOME3) để so sánh các bản vá không hoàn toàn giống nhau. Nếu không có sự khác biệt nào ngoài số dòng, nó sẽ in [SAME] . Nếu chỉ có sự khác biệt về nhận xét, nó sẽ in [giống nhau] (ở dạng chữ thường). Ví dụ:

 $ gitbranchcmp3 recovery24 
Branch recovery24 có 47 bản vá. danh sách sau lỗi io
39 90fefb577a26 9b3c4e6efb10 [same] gfs2:dọn dẹp lỗi iopen glock trong gfs2_create_inode
40 ba3ae06b8b0e d2e8c22be39b [same] gfs2:Kiểm tra lỗi thích hợp cho họ go_sync 419 2ab glops
9563e31f8bfd [SAME] gfs2:sử dụng page_offset trong gfs2_page_mkwrite
42 0adc6d817b7a ebac7a38036c [SAME] gfs2:không sử dụng buffer_heads trong gfs2_allocate_page_backing
43 55ef1f8d817b7a ebac7a38036c [SAME] gfs2:không sử dụng buffer_heads trong gfs2_allocate_page_backing
43 55ef1f8d0bec27 gfshp 44 de57c2f72570 a3e86d2ef30e [SAME] gfs2:Phân bổ nhiều khối trong gfs2_page_mkwrite
45 7c5305fbd68a da3c604755b0 [SAME] gfs2:Khắc phục việc xử lý phần cuối của tệp trong gfs2_page_mkwrite
45 7c5305fbd68a da3c604755b0 [SAME] gfs2:Sửa lỗi xử lý cuối tệp trong gfs2_page_mkelfrite của Rafaf151 4546 45252400 thiết bị đo đạc
47 a06a5b7dea02 [] GFS2:Thêm go_get _holdtime to gl_ops
48 8ba93c796d5c [] gfs2:giới thiệu hàm mới còn lại_hold_time và sử dụng nó trong dq
49 e8b5ff851bb9 [] gfs2:Cho phép rgrps có thời gian lưu giữ tối thiểu

Thiếu từ recovery25:
Thiếu:
So sánh tập lệnh được tạo tại:/tmp/compare_mismatches.sh

6. gitlog.find

Cuối cùng, tôi có gitlog.find , một tập lệnh để giúp tôi xác định vị trí của các phiên bản ngược dòng của các bản vá của tôi và trạng thái hiện tại của mỗi bản vá. Nó thực hiện điều này bằng cách khớp với mô tả bản vá. Nó cũng tạo ra một tập lệnh so sánh (một lần nữa, sử dụng Kompare) để so sánh bản vá hiện tại với bản sao ngược dòng:

 $ gitlog.find 
----------------------- [recovery25 - 50 bản vá] ---------- -------------
(snip)
11 340d27a33895 Bob Peterson gfs2:thoát danh sách ail2 sau lỗi io
lo 5bcb9be74b2a Bob Peterson gfs2:thoát ail2 danh sách sau lỗi io
10 9b3c4e6efb10 Bob Peterson gfs2:dọn dẹp mớ hỗn độn iopen trên gfs2_create_inode
fn 2c47c1be51fb Bob Peterson gfs2:dọn dẹp mớ hỗn độn trên iopen trong gfs2_create_inode
9 d2e8c22 gfs2b Bob Peterson thích hợp kiểm tra lỗi cho họ glops go_sync
lo feb7ea639472 Bob Peterson gfs2:Kiểm tra lỗi thích hợp cho họ go_sync của glops
8 9563e31f8bfd Christoph Hellwig gfs2:sử dụng page_offset trong gfs2_page_mkwrite
ms f3915f83e84c Christoph Hellwig gfs2:sử dụng page_offset trong gfs2_page_mkwrite
7 ebac7a38036c Christoph Hellwig gfs2:không sử dụng buffer_heads trong gfs2_allocate_page_backing
ms 35af80aef99b Christoph Hellwig gfs2:không sử dụng buffer_heads trong gfs2_allocate_page_ba cking
6 f703a3c27874 Andreas Gruenbacher gfs2:Cải thiện tính nhất quán của mmap write so với punch_hole
fn 39c3a948ecf6 Andreas Gruenbacher gfs2:Cải thiện tính nhất quán của mmap write so với punch_hole
5 a3e86d2ef30e Andreas Gruenbacher gfs2:gfs2_page_mkwrite
fn f53056c43063 Andreas Gruenbacher gfs2:Phân bổ nhiều khối trong gfs2_page_mkwrite
4 da3c604755b0 Andreas Gruenbacher gfs2:Sửa lỗi xử lý cuối tệp trong gfs2_page_mkwrite offs2 gruenbacher -xử lý tệp trong gfs2_page_mkwrite
3 4525c2f5b46f Thiết bị đo bản sàn của Bob Peterson Rafael Aquini
Không tìm thấy ngược dòng
2 a06a5b7dea02 Bob Peterson GFS2:Thêm go_get_holdtime vào gl_ops
Không tìm thấy ngược dòng
^ 8ba93c796d5c Bob Peterson gfs2:giới thiệu hàm mới còn lại_hold_time và sử dụng nó trong dq
Không tìm thấy ngược dòng
H e8b5ff851bb9 Bob Peterson gfs2:Cho phép rgrps có thời gian lưu giữ tối thiểu
Không tìm thấy stream
So sánh tập lệnh được tạo:/tmp/compare_upstream.sh

Các bản vá được hiển thị trên hai dòng, đầu tiên là bản vá hiện tại của bạn, tiếp theo là bản vá ngược dòng tương ứng và một chữ viết tắt gồm 2 ký tự để biểu thị trạng thái ngược dòng của nó:

  • lo có nghĩa là bản vá chỉ nằm trong repo Git ngược dòng cục bộ (tức là chưa được đẩy ngược dòng).
  • mili giây nghĩa là bản vá nằm trong nhánh chính của Linus Torvald.
  • fn nghĩa là bản vá được đẩy sang nhánh phát triển "cho tiếp theo" của tôi, dành cho cửa sổ hợp nhất ngược dòng tiếp theo.

Một số tập lệnh của tôi đưa ra các giả định dựa trên cách tôi thường làm việc với Git. Ví dụ:khi tìm kiếm các bản vá ngược dòng, nó sử dụng vị trí của cây Git nổi tiếng của tôi. Vì vậy, bạn sẽ cần phải điều chỉnh hoặc cải thiện chúng cho phù hợp với điều kiện của mình. gitlog.find script được thiết kế để chỉ định vị các bản vá lỗi GFS2 và DLM, vì vậy trừ khi bạn là nhà phát triển GFS2, bạn sẽ muốn tùy chỉnh nó cho các thành phần mà bạn quan tâm.

Mã nguồn

Đây là nguồn cho các tập lệnh này.

1. gitlog

 #! / bin / bash 
branch =$ 1

if test "x $ branch" =x; then
branch =`git branch -a | grep "*" | cut -d '' -f2 '
fi

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

LIST =` git log --reverse --abbrev-commit --pretty =oneline $ tracking .. $ branch | cut -d '' -f1 | paste -s -d '' '
cho tôi trong $ LIST; làm các bản vá =$ (echo $ patch + 1 | bc); done

if [[$ branch =~. * for-next. *]]
then
start =HEAD
# start =origin / for-next
else
start =origin / master
fi

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

/ usr / bin / echo" --------------------- - ["$ branch"] ----------------------- "
patch =$ (echo $ patch - 1 | bc);
cho tôi trong $ LIST; do
if [$ patch -eq 1]; then
cnt ="^"
elif [$ patch -eq 0]; then
cnt ="H"
else
if [$ patch -lt 10]; thì
cnt ="$ patch"
else
cnt ="$ patch"
fi
fi
/ usr / bin / git show --abbrev -commit -s --pretty =format:"$ cnt% h% <| (32)% an% s% n" $ i
patch =$ (echo $ patch - 1 | bc)
done
#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

if test "x $ branch" =x; then
branch =`git branch -a | grep "*" | cut -d '' -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 | cut -d '' -f1 | paste -s -d ''

3. gitlog.id2

 #! / bin / bash 
branch =$ 1

if test "x $ branch" =x; then
branch =`git branch -a | grep "*" | cut -d '' -f2 '
fi

tracking =`git rev-parse --abbrev-ref --symbolic-full-name @ {u}`
git log --reverse --abbrev-commit --pretty =oneline $ tracking .. $ branch | cut -d '' -f1 | paste -s -d ''

4. gitlog.grep

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

nếu kiểm tra "x $ param2" =x; then
branch =`git branch -a | grep "*" | cut -d '' -f2 '
string =$ param1
else
branch =$ param1
string =$ param2
fi

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

LIST =`git log --reverse --abbrev -commit --pretty =oneline $ tracking .. $ branch | cut -d '' -f1 | paste -s -d '' '
cho tôi trong $ LIST; làm các bản vá lỗi =$ (echo $ patch + 1 | bc); done
/ usr / bin / echo "----------------------- [ Các bản vá lỗi "$ branch" - "$ patch"] ----------------------- "
patch =$ (echo $ patch - 1 | bc );
cho tôi trong $ LIST; do
if [$ patch -eq 1]; then
cnt ="^"
elif [$ patch -eq 0]; then
cnt ="H"
else
if [$ patch -lt 10]; thì
cnt ="$ patch"
else
cnt ="$ patch"
fi
fi
/ usr / bin / git show --abbrev -commit -s --pretty =format:"$ cnt% h% <| (32)% an% s" $ i
/ usr / bin / git show --pretty =email --patch-with- stat $ i | grep -n "$ string"
patch =$ (echo $ patch - 1 | bc)
xong

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 "# Tạo bởi gitbranchcmp3.sh">> $ script
echo "# Chạy tập lệnh này để so sánh các bản vá không khớp">> $ script
echo " ">> $ script
echo" function so sánh_them () ">> $ script
echo" {">> $ script
echo" git show --pretty =email --patch-with -stat \ $ 1> / tmp / gronk1 ">> $ script
echo" git show --pretty =email --patch-with-stat \ $ 2> / tmp / gronk2 ">> $ script
echo "kompare / tmp / gronk1 / tmp / gronk2">> $ script
echo "}">> $ script
echo "">> $ script

if test " x $ newbranch "=x; thì
newbranch =`git branch -a | grep "*" | cut -d '' -f2 '
fi

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

khai báo -a oldsha1s =(`git log --reverse --abbrev-commit --pretty =oneline $ tracking .. $ oldbranch | cut -d '' -f1 | paste -s -d '' ')
statement -a newsha1s =(`git log --reverse --abbrev-commit --pretty =oneline $ tracking .. $ newbranch | cut -d '' -f1 | paste -s -d '' ')

#echo "old:" $ oldsha1s
oldcount =$ {# oldsha1s [@]}
echo "Chi nhánh $ oldbranch có các bản vá $ oldcount"
oldcount =$ (echo $ oldcount - 1 | bc)
#for o in `seq 0 $ {# oldsha1s [@]}`; làm
# echo -n $ {oldsha1s [$ o]} ""
# desc =`git show $ i | đầu -5 | tail -1 | cut -b5-`
#done

#echo" new:"$ newsha1s
newcount =$ {# newsha1s [@]}
echo "Chi nhánh $ newbranch có bản vá $ newcount"
newcount =$ (echo $ newcount - 1 | bc)
#for o in `seq 0 $ {# newsha1s [@]}`; làm
# echo -n $ {newsha1s [$ o]} ""
# desc =`git show $ i | đầu -5 | tail -1 | cut -b5-`
#done
echo

for new in` seq 0 $ newcount`; do
newsha =$ {newsha1s [$ new]}
newdesc =`git show $ newsha | đầu -5 | tail -1 | cut -b5-`
oldsha =" "
same =" [] "
for old in` seq 0 $ oldcount`; do
if test "$ {oldsha1s [$ old]}" ="match"; sau đó
tiếp tục;
fi
olddesc =`git show $ {oldsha1s [$ old]} | đầu -5 | tail -1 | cut -b5-`
if test" $ olddesc "=" $ newdesc "; thì
oldsha =$ {oldsha1s [$ old]}
#echo $ oldsha
git show $ oldsha | tail -n +2 | grep -v "index. * \. \." | grep -v "@@"> / tmp / gronk1
git hiển thị chỉ mục $ newsha | tail -n +2 | grep -v ". * \. \." | grep -v "@@"> / tmp / gronk2
diff / tmp / gronk1 / tmp / gronk2 &> / dev / null
if [$? -eq 0]; then
# Không có sự khác biệt nào
same ="[SAME]"
oldsha1s [$ old] ="match"
break
fi
> Git show $ oldsha | sed -n '/ diff /, $ p' | grep -v "index. * \. \." | grep -v "@@"> / tmp / gronk1
git hiển thị chỉ mục $ newsha | sed -n '/ diff /, $ p' | grep -v ". * \. \." | grep -v "@@"> / tmp / gronk2
diff / tmp / gronk1 / tmp / gronk2 &> / dev / null
if [$? -eq 0]; then
# Chỉ khác biệt trong nhận xét
same ="[same]"
oldsha1s [$ old] ="match"
break
fi
oldsha1s [$ old] ="match"
echo "so sánh_them $ oldsha $ newsha">> $ script
fi
done
echo "$ new $ oldsha $ newsha $ same $ newdesc "
done

echo
echo" Còn thiếu từ $ newbranch:"
the_missing =" "
# Bây giờ hãy chạy qua phần cũ của chúng tôi chưa đối sánh
với cũ trong `seq 0 $ oldcount`; thực hiện
nếu kiểm tra $ {oldsha1s [$ old]}! ="match"; then
olddesc =`git show $ {oldsha1s [$ old]} | đầu -5 | tail -1 | cut -b5-`
echo" $ {oldsha1s [$ old]} $ olddesc "
the_missing =` echo "$ the_missing $ {oldsha1s [$ old]}" `
Fi
done

echo "Phần thiếu:" $ the_missing
echo "So sánh tập lệnh được tạo tại:$ script"
#git log --reverse --abbrev -commit --pretty =oneline $ tracking .. $ branch | cut -d '' -f1 | paste -s -d ''

6. gitlog.find

 #! / bin / bash 
#
# Tìm bản vá tương đương ngược dòng
#
# gitlog.find
#
cwd =$ PWD
param1 =$ 1
ubranch =$ 2
patch =0
script =/ tmp / so sánh_upstream.sh
echo "#! / bin / bash"> $ script
/ usr / bin / chmod 755 $ script
echo "# Generated by gitbranchcmp3.sh">> $ script
echo "# Chạy tập lệnh này để so sánh các bản vá không khớp">> $ script
echo "">> $ script
echo "function so sánh_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 ">> $ script
echo "kompare / tmp / gronk1 / tmp / gronk2">> $ script
echo "}">> $ script
echo "">> $ script

/> # echo "Đang thu thập thông tin bản vá ngược dòng. Vui lòng đợi."
branch =`git branch -a | grep "*" | cut -d '' -f2 '
tracking =`git rev-parse --abbrev-ref --symbolic-full-name @ {u}`

cd ~ / linux.git
if test "X $ {ubranch}" ="X"; thì
ubranch =`git branch -a | grep "*" | cut -d '' -f2 '
fi
utracking =`git rev-parse --abbrev-ref --symbolic-full-name @ {u}`
#
# thu thập danh sách các bản vá lỗi gfs2 từ chính trong trường hợp chúng tôi không thể tìm thấy nó
#
#git log --abbrev-commit --pretty =format:"% h% <| (32) % an% s "master | grep -i -e" gfs2 "-e" dlm "> / tmp / gronk
git log --reverse --abbrev-commit --pretty =format:" ms% h% <| (32)% an% s "master fs / gfs2 /> /tmp/gronk.gfs2
# ms =in Linus's master
git log --reverse --abbrev-commit --pretty =định dạng:"ms% h% <| (32)% an% s" master fs / dlm /> /tmp/gronk.dlm

cd $ cwd
LIST =`git log - -reverse --abbrev-commit --pretty =oneline $ tracking .. $ branch | cut -d '' -f1 | paste -s -d '' '
cho tôi trong $ LIST; làm các bản vá lỗi =$ (echo $ patch + 1 | bc); done
/ usr / bin / echo "----------------------- [ Các bản vá lỗi "$ branch" - "$ patch"] ----------------------- "
patch =$ (echo $ patch - 1 | bc );
cho tôi trong $ LIST; do
if [$ patch -eq 1]; then
cnt ="^"
elif [$ patch -eq 0]; then
cnt ="H"
else
if [$ patch -lt 10]; thì
cnt ="$ patch"
else
cnt ="$ patch"
fi
fi
/ usr / bin / git show --abbrev -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 =định dạng:"lo% h% <| (32)% an% s" $ utracking .. $ ubranch | grep "$ desc" `
# lo =in local for-next
if test" X $ up_eq "=" X "; then
up_eq =`git log --reverse --abbrev-commit --pretty =format:" fn% h% <| (32)% an% s "master .. $ utracking | grep "$ desc" `
# fn =in-next cho cửa sổ hợp nhất tiếp theo
nếu kiểm tra" X $ up_eq "=" X "; then
up_eq =`grep" $ desc "/ tmp / gronk.gfs2`
nếu thử nghiệm" X $ up_eq "=" X "; then
up_eq =`grep" $ desc "/ tmp / gronk.dlm`
nếu thử nghiệm" X $ up_eq "=" X "; thì
up_eq ="Không tìm thấy ngược dòng"
cmp =0
fi
fi
fi
fi
echo "$ up_eq"
If [$ cmp -eq 1]; sau đó
UP_SHA1 =`echo $ up_eq | cut -d '' -f2`
echo" so sánh_them $ UP_SHA1 $ i ">> $ script
fi
cd $ cwd
Patch =$ (echo $ patch - 1 | bc)
done
echo "So sánh tập lệnh được tạo:$ script"