Git pre-commit hook ทำงานเหมือนหลังการคอมมิต

ชื่อเรื่องสวยมากพูดมันทั้งหมด

ใน repo ท้องถิ่นฉันมีโฟลเดอร์ .git ที่มี hooks ของฉัน ฉันใช้แหล่งที่มา Lua ที่กำหนดเองเพื่อเขียนเวอร์ชันปัจจุบันในไฟล์ภายในตัวมันเอง จากนั้นในเบ็ดก่อนการคอมมิตฉันมี:

#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".

echo "START" >> E:/Desktop/tmp.txt

exec $LUA_HOME\\lua.exe ${PWD}\\hooks\\pre-commit.lua "${PWD}/lua/autorun/trackassembly_init.lua" "Rev." > E:/Desktop/tmp.txt

ฉันมีไฟล์สองไฟล์ ในตอนแรกฉันทำการเปลี่ยนแปลงจริง (ไฟล์ต้นฉบับ) อันที่สองที่ฉันใช้เพื่อเขียนเวอร์ชันปัจจุบันใน ( version file )

เมื่อใดก็ตามที่ฉันใช้ TortoiseGit และทำ:

1) Modify the source file
2) Repo Directory --> Right Click --> Git Commit "master"

ข้อมูลเกี่ยวกับไฟล์ต้นฉบับจะถูกเพิ่มลงในดัชนี แต่ไม่มีร่องรอยของไฟล์เวอร์ชันที่เปลี่ยนแปลงโดยมีเวอร์ชันใหม่อยู่ข้างใน สิ่งนี้นำไปสู่ความแตกต่างระหว่างสำเนาการทำงานและไฟล์เวอร์ชันและ TortoiseGit ใส่ (!) ไว้ในไดเร็กทอรี

ตามคู่มือ:

เบ็ดที่คอมมิตล่วงหน้าจะถูกรันก่อน ก่อนที่คุณจะพิมพ์ข้อความคอมมิตด้วยซ้ำ ใช้เพื่อตรวจสอบสแน็ปช็อตที่กำลังจะกระทำ เพื่อดูว่าคุณลืมบางสิ่งบางอย่างหรือไม่ เพื่อให้แน่ใจว่าการทดสอบดำเนินไป หรือเพื่อตรวจสอบสิ่งที่คุณต้องตรวจสอบในโค้ด การออกจากจุดที่ไม่ใช่ศูนย์จากฮุคนี้จะยกเลิกการคอมมิต


person Деян Добромиров    schedule 24.09.2015    source แหล่งที่มา


คำตอบ (1)


ในคอมไพล์ คุณต้องทำการเปลี่ยนแปลง (git add) ก่อน จากนั้นจึงคอมมิตมัน (git commit) (จากนั้นคุณพุชมัน แต่มันไม่สำคัญที่นี่) hook หลังการคอมมิตทำงานหลังจากการคอมมิต หากคุณเปลี่ยนสำเนาการทำงานในขณะนั้น จะไม่ส่งผลต่อการเปลี่ยนแปลงตามขั้นตอน

person choroba    schedule 24.09.2015
comment
ฉันจะแทรกเวอร์ชันของฉันได้อย่างไร? มันใช้งานได้เมื่อฉันตั้งค่า TortoiseGit ให้ใช้สิ่งที่เรียกว่า start-commit hook มันใช้กลอุบาย แต่มี IDK อยู่ในไดเร็กทอรี .git/hooks ฉันเดาว่า ... ไม่ หลังจากวางไฟล์ชื่อ start-commit ที่นั่นก็ไม่พบด้วยซ้ำ - person Деян Добромиров; 24.09.2015
comment
@ ДеянДобромиров: เพียง git add ไฟล์ที่เปลี่ยนแปลงหลังจากการเปลี่ยนแปลงใน hook - person choroba; 24.09.2015
comment
Ran git เพิ่ม ${PWD}/lua/autorun/trackassembly_init.lua ก่อนและหลังการเปลี่ยนแปลงไฟล์เวอร์ชันและไม่มีผลกระทบใด ๆ เลย .. - person Деян Добромиров; 24.09.2015
comment
@ДеянДобромиров: แปลก. ฉันลองด้วย git add file หลังจากการเปลี่ยนแปลง และมันได้ผลสำหรับฉัน - person choroba; 24.09.2015
comment
นอกจากนี้ยังไม่มีตัวเลือกเพิ่มในเมนูบริบทของไฟล์ที่แก้ไขใน TortoiseGit คุณใช้ลูกค้าคนไหน? - person Деян Добромиров; 24.09.2015
comment
พยายามด้วย ' git add ${PWD}\\lua\\autorun\\trackassembly_init.lua git commit --amend --no-edit ' - person Деян Добромиров; 24.09.2015
comment
@ ДеянДобромиров: ฉันใช้บรรทัดคำสั่ง git ที่มาพร้อมกับ linux หรือ cygwin - person choroba; 24.09.2015
comment
โอ้ เป็นอย่างนั้น ไม่เป็นไร แค่ใช้วิธีการเก่าของฉันแทน มันใช้งานได้อย่างมีเสน่ห์กับไฟล์ *.bat ใต้หน้าต่าง - person Деян Добромиров; 25.09.2015