ค้นหาเว็บไซต์

การสร้างข้อความ Git Commit ด้วย PowerShell


ในกระบวนการเรียนรู้การใช้ Git ของฉัน ฉันกำลังพยายามสร้างนิสัยในการใช้ข้อความยืนยันที่มีความหมาย แน่นอนว่าคุณสามารถใช้ความคิดเห็นบรรทัดเดียวซึ่งใช้ได้ดีเมื่อเรียกใช้ git log -oneline แต่คุณสามารถใช้ข้อความยืนยันแบบหลายบรรทัดได้ อย่างไรก็ตาม ต้องมีการวางแผนเล็กน้อยซึ่งอาจไม่ใช่เรื่องเลวร้าย เนื่องจากโปรเจ็กต์ Git ของฉันเกี่ยวข้องกับ PowerShell และฉันมักจะพบเคล็ดลับเล็กๆ น้อยๆ ที่เหมาะกับฉันใน PowerShell ISE

ในโครงการ PowerShell ของฉัน ฉันพยายามรวมไฟล์บันทึกการเปลี่ยนแปลง ไฟล์แสดงรายการการเปลี่ยนแปลงที่เกิดขึ้นในแต่ละเวอร์ชันซึ่งจะตรงกับการคอมมิตเสมอ รายการอาจมีลักษณะดังนี้:

v0.0.1
Import tasks from XML file
Get tasks from XML file with options.
added core module files

นี่คือข้อความที่ฉันต้องการรวมไว้ในข้อความยืนยันฉบับเต็มของฉัน ฉันไม่ต้องการคัดลอกและวางหรือพิมพ์ซ้ำจำนวนมาก ดังนั้นฉันจึงเขียนฟังก์ชัน PowerShell ง่ายๆ ที่สร้างข้อความยืนยันของฉัน

#New-GitMessage.ps1

<#
Copy selected text into a here string that can be
used as a git commit message
#>

Function New-GitMessage {
[cmdletbinding()]

Param([string]$Text = $psise.CurrentFile.Editor.SelectedText)

#insert the selected text into a global variable.
$global:msg = $text

}
#create a shortcut in the ISE
$psise.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Commit Msg",{New-GitMessage},$null) | Out-Null

สคริปต์นี้มีวัตถุประสงค์เพื่อใช้ใน PowerShell ISE แนวคิดนี้เรียบง่ายมากและอาจไม่ต้องการฟังก์ชันจริงๆ สมมติฐานคือฉันจะเลือกส่วนหนึ่งของข้อความในบันทึกการเปลี่ยนแปลงและรันคำสั่ง New-GitMessage คำสั่งทั้งหมดทำคือแทรกข้อความลงในตัวแปรส่วนกลาง แม้ว่าทุกอย่างใน ISE จะทำงานอยู่ในขอบเขตเดียวกัน แต่ฉันใช้คำนำหน้าสากล ดังนั้นความตั้งใจของฉันจึงชัดเจน เมื่อฉันพร้อมที่จะกระทำ ฉันสามารถใช้สำนวนเช่นนี้:

git commit -a -m $msg

เรียบง่าย แต่มีประสิทธิภาพ

บรรทัดสุดท้ายในไฟล์สคริปต์จะเพิ่มตัวเลือกให้กับเมนู AddOns ฉันไม่ได้ใช้แป้นพิมพ์ลัด แต่คุณสามารถเพิ่มได้หากต้องการ ในสคริปต์โปรไฟล์ PowerShell ISE ของฉัน ฉันระบุแหล่งที่มาของไฟล์สคริปต์นี้ และฉันพร้อมที่จะใช้งานแล้ว

นี่คือคำสั่งที่ใช้งานจริง

นี่แทบจะไม่ใช่โค้ด PowerShell ที่แหวกแนวเลย แต่ฉันพบว่าทางลัดเล็กๆ น้อยๆ ทุกอันที่ฉันสามารถทำได้จะเพิ่มมากขึ้นในระยะยาว

บทความที่เกี่ยวข้อง