คุณสามารถแนะนำเทมเพลต / แนวทางการส่งข้อความที่ดีเพื่อบังคับใช้ใน บริษัท ได้หรือไม่? [ปิด]


38

ใน Git เป็นไปได้ที่จะตั้งค่าและบังคับใช้เทมเพลตการคอมมิท

คุณสามารถแนะนำเทมเพลต / แนวทางปฏิบัติที่ดีเพื่อบังคับใช้ใน บริษัท ได้หรือไม่?

คำตอบ:


42

ฉันใช้

[Abc]: Message.

ด้วย Add, Mod (ify), Ref (actoring), Fix, Rem (ove) และ Rea (dability) ดังนั้นจึงเป็นเรื่องง่ายที่จะแยก logfile

ตัวอย่าง:

Add: New function to rule the world.  
Mod: Add women factor in Domination.ruleTheWorld().  
Ref: Extract empathy stuff to an abstract class.  
Fix: RUL-42 or #42 Starvation need to be initialised before Energy to avoid the nullpointer in People.  
Rem: freeSpeech is not used anymore.  
Rea: Removed old TODO and extra space in header.  

หากฉันมีมากกว่าหนึ่งบรรทัดฉันจะเรียงลำดับพวกเขาด้วยสิ่งที่สำคัญที่สุดก่อน


1
+1 นั่นเป็นวิธีที่ดีในการจัดการกับมันและคุณสามารถ grep สำหรับการเปลี่ยนแปลงได้อย่างง่ายดาย
Sardathrion - Reinstate Monica

12
จี๊ด! คุณเอาคำพูดฟรี!
CaffGeek

1
คุณช่วยอธิบายความแตกต่างระหว่างModและได้Refไหม? บางครั้งฉันก็แค่ทำการแก้ไขเล็ก ๆ ซึ่งเป็นการฟื้นฟูบางอย่าง
yegle

2
@yegle Modเป็นเรื่องเกี่ยวกับการเพิ่มบางสิ่งบางอย่างหรือเปลี่ยนพฤติกรรมRefเป็นเรื่องเกี่ยวกับการเปลี่ยนแปลงสิ่งภายในที่ไม่ได้เพิ่ม fonctionality ใด ๆ เพิ่ม API ฯลฯ ตัวอย่าง: ถ้าฉันมีadd(Object)ฟังก์ชั่นและฉันดำเนินการการทำงานของผมจะแสดงความเห็นด้วยadd(List<Object>) Modต่อมาผมเอาการทำสำเนาและใช้โดยตรงadd(Object)ในนั้นผมจะใช้add(List<Object>) Ref
rangzen

14

เราใช้สิ่งต่อไปนี้:

[ID ตั๋วใน JIRA]: [ข้อความ: สิ่งที่ได้กระทำ] ตัวอย่างเช่น - ABC-123: เพิ่มความสามารถในการนำเสนอการกำหนดค่าต่อภูมิภาค

ในกรณีนี้ด้วยการรวมที่เหมาะสมคุณจะสามารถได้รับการเปลี่ยนแปลง / ลบ / เพิ่มไฟล์ในตัวติดตามปัญหาของคุณ อย่างไรก็ตามโปรดทราบว่าคุณควรป้องกันบางสิ่งเช่นABC-123: DoneหรือABC-123: แก้ไขด้วยตัวกรองถ้าเป็นไปได้


+1 สำหรับการแก้ไขข้อบกพร่อง แต่แล้วคุณสมบัติใหม่ ๆ ล่ะ? เว้นแต่จะมีการสร้างฟีเจอร์ใหม่ทั้งหมดใน JIRA เช่นกัน ...
Sardathrion - Reinstate Monica

3
@Sardathrion - โดยส่วนตัวแล้วฉันจะสร้างเครื่องมือติดตามสำหรับฟังก์ชั่นใหม่ใน JIRA เราทำสิ่งนี้กับ Bugzilla และให้ทีมทดสอบ (และคนอื่น ๆ ) เห็นทัศนวิสัยที่ดีของทุกสิ่งที่วางจำหน่ายและลดสิ่งที่จะออกไปเมื่อพวกเขาไม่ได้ทำการทดสอบ / ตรวจสอบรหัส / อะไรก็ตาม
Jon Hopkins

@ JonHopkins: ในขณะที่ตัวติดตามบั๊กสามารถใช้งานฟีเจอร์ใหม่ ๆ ได้ แต่มันอาจไม่ใช่เครื่องมือในอุดมคติ แน่นอนว่าระยะของคุณจะแตกต่างกันไป ^ _ ~
Sardathrion - Reinstate Monica

3
ฉันชอบที่จะได้รับตั๋วมอบหมายทุกการกระทำ (ตั๋วบางใบอาจมีหลายคอมมิชชันแน่นอน): มันเป็นวิธีที่ง่ายมากในการรับข้อมูลพื้นฐานเพิ่มเติมเมื่อตรวจสอบรหัสในภายหลัง "ทำไมพวกเขาทำอย่างนั้น?" ตอบได้ง่ายกว่ามากเมื่อคุณมีคอมเม้นท์คอมเม้นท์และรายการติดตามปัญหา
โจอาคิมซาวเออร์

จะดีกว่าไหมถ้าจะทำตั๋วแยกสาขา?
Tamás Szelei

11

มีกฎง่าย ๆ ข้อเดียวซึ่งเป็นแบบแผนตามด้วย SCM จำนวนมาก (ถ้าไม่ใช่ทั้งหมด) และโดยเครื่องมือส่วนใหญ่ที่ทำงานกับ SCM:

บรรทัดแรกของข้อความคอมมิทเป็นการสรุปสั้น ๆ ในขณะที่ข้อความที่เหลือนั้นมีรายละเอียด

ดังนั้นเครื่องมือส่วนใหญ่จะแสดงบรรทัดแรกเท่านั้นและแสดงข้อความทั้งหมดตามต้องการ

การใช้ข้อความโดยทั่วไปในทางที่ผิดนั้นเป็นรายการหัวข้อย่อยของการเปลี่ยนแปลง (แสดงหัวข้อย่อยแรกเท่านั้นที่จะแสดง) การใช้ในทางที่ผิดก็คือการเขียนข้อความแบบละเอียด loooong ในบรรทัดเดียว

ดังนั้นหากมีสิ่งหนึ่งที่จะบังคับใช้ฉันจะบอกว่ามันเป็นความยาวสูงสุดของบรรทัดแรก


ฉันไม่เคยเห็นเหตุผลที่จะเขียนข้อความคอมมิทอย่างละเอียดใน Git เลย ข้อมูลโดยละเอียดไปในตัวติดตามปัญหาและดังนั้นข้อความการส่งข้อความของฉันจึงเป็นเพียงคำอธิบายหนึ่งประโยคของการเปลี่ยนแปลง (เล็กน้อย) ที่ฉันได้กระทำไป
Marnen Laibow-Koser

9

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

ไม่ควรรวมข้อมูลเกี่ยวกับสิ่งที่ถูกคอมมิตซึ่งสามารถกำหนดได้โดยระบบ SCM ข้อมูลข้อบกพร่อง / คุณสมบัติเพิ่มเติมอยู่ในที่ที่เคยมีการติดตามข้อบกพร่องและคุณสมบัติ

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

จากนั้นเมื่อดูประวัติการแก้ไขสำหรับไฟล์คุณมีข้อความสั้น ๆ ที่อธิบายประวัติ แต่ยังรู้ว่าจะหารายงานข้อผิดพลาดรายละเอียดเพิ่มเติมหรือคำอธิบายงานสำหรับรายละเอียดเพิ่มเติมได้ที่ไหน


4
เครื่องมือบั๊กหลายตัวจะให้คุณเชื่อมโยงโดยตรงไปยังการแก้ไขในเครื่องมือ SCM ของคุณหากคุณป้อนรายละเอียดในรูปแบบที่ถูกต้อง ในทำนองเดียวกันเครื่องมือ SCM จำนวนมากจะเชื่อมโยงโดยตรงกับฐานข้อมูลบั๊กหากคุณป้อนรายละเอียดข้อผิดพลาดในรูปแบบที่ถูกต้อง IMO ตราบใดที่คุณทำเช่นนี้คุณก็เป็นทองคำ
Dean Harding

4

ใน Git มันเป็นไปได้ที่จะบังคับใช้อะไรเกือบกับGit ตะขอ ตรวจสอบตัวอย่างใน. git / hooks เพื่อหาแนวคิด

สำหรับข้อความในกรณีทั่วไปคุณต้องการรวมข้อมูลที่เพียงพอเกี่ยวกับปัญหาที่คุณแก้ไขและวิธีการแก้ปัญหาเพื่อให้สามารถค้นหาและระบุการกระทำนี้ในภายหลัง ในกรณีส่วนใหญ่ปัญหาจะได้รับการอ้างอิงหมายเลขข้อบกพร่อง (ด้วยการรวมที่เหมาะสมกับระบบติดตามบั๊กของคุณ) หากคุณมีระบบอื่นที่กระบวนการของคุณผสานรวมกับ (เช่นระบบติดตามตรวจสอบรหัส) ให้รวมบิตที่เหมาะสมด้วย:

Extracted checking foobar range from bar() into foo(min, max) to re-use
in yadda() and blah(). foo() returns true if foobar is in the
specified range and false otherwise.

BugID: 123456
ReviewedBy: mabuddy
AutomergeTo: none

แต่คุณต้องการให้มันง่าย มิฉะนั้นคนจะหาวิธีที่จะโกงระบบและสร้างข้อความกระทำที่ไร้ประโยชน์


0

เราใช้เทมเพลตที่มี

  • หมายเลข id ของข้อบกพร่อง / คุณสมบัติ / แก้ไข
  • ตอบใช่ / ไม่ใช่อธิบายว่ามีการทดสอบรหัสหรือไม่
  • และส่วนรายละเอียดสำหรับคำอธิบายสั้น ๆ ของความตั้งใจของการกระทำ

สองคนแรกจะถูกละไว้โดยส่วนใหญ่อย่างไรก็ตาม (บางครั้งทั้งสาม) ดังนั้นมันจึงไม่ใช่เรื่องใหญ่


0

โดยทั่วไปฉันมีตัวระบุที่อยู่ในระบบติดตามตั๋วที่ฉันใช้หรือภาพรวมระดับสูงเป็นบรรทัดแรก จากนั้นฉันมีรายการ "กระสุน" ของรายการการเปลี่ยนแปลงเฉพาะในการส่งมอบ ดังนั้นฉันสามารถทำสิ่งที่ชอบ:

MyVideoGameProject-123 OR Inventory System Improvements
Made inventory GUI drap and drap
Added ability to have multiple bag slots to expand inventory capacity

นี่คือรูปแบบการส่งข้อมูลที่สะอาดที่สุดที่ฉันชอบ มันตรงและตรงประเด็น อีกเหตุผลหนึ่งที่ฉันทำเช่นนี้คือถ้าฉันต้องการสร้างบันทึกการเปลี่ยนแปลงฉันสามารถนำข้อความการส่งทั้งหมดและแยกวิเคราะห์ลงในบันทึกการเปลี่ยนแปลงได้อย่างง่ายดายมาก


0

[ticketId] [ABC] [topicId] [WIP] ข้อความที่:

  • ticketId - id ของไอเท็มในที่เก็บภารกิจ
  • ABC - เพิ่ม (คุณสมบัติ), แก้ไข (แก้ไขข้อผิดพลาด), str (โครงสร้าง), dep (อ้างอิง) rem (ความเข้ากันไม่ได้ / ลบย้อนหลัง), rea (อ่านได้), ref (refactoring)
  • topicId - สามารถเป็นตัวเลือกงานสำหรับเจนกินส์และ / หรือชื่อสาขาและ / หรือชื่อหัวข้อสำหรับ gerrit
  • WIP - กำลังดำเนินการอยู่หรือไม่ (เช่นอาจต้องรวมสิ่งนี้อย่างต่อเนื่อง)
  • ข้อความ - รายละเอียดของการแก้ไข

ตัวอย่าง:
[# 452567] [เพิ่ม] [เมนู_item] รายการใหม่ - สมุดเยี่ยม
[# 452363] [แก้ไข] [banner_top] [WIP] 1024x300 สามารถใช้งานได้ในขณะนี้
[# 452363] [แก้ไข] [banner_top] 500x200 สามารถใช้งานได้ในขณะนี้
[ # 452713] [rem] [หน้า] เหลือโฆษณาตอนกลาง


คำตอบของคุณจะแข็งแกร่งขึ้นถ้าคุณอธิบายว่าทำไมคุณถึงรู้สึกว่านี่เป็นรูปแบบที่ดี ในขณะที่คุณค่าของรูปแบบนี้อาจเห็นได้ชัดกับคุณ แต่คุณค่านั้นไม่ชัดเจนสำหรับผู้อื่น

ขอบคุณสำหรับความคิดเห็น - ใช่ฉันจะอธิบายในรายละเอียดเพิ่มเติมเร็ว ๆ นี้ - ฉันแค่อยากจะเริ่มต้นด้วยข้อเท็จจริง - จะเป็นคุณลักษณะที่ดีสแต็คที่คุณสามารถลงนามในคำตอบกับ WIP :)
laplasz

สำหรับ 'งานระหว่างทำ' - นี่เป็นหมายเหตุสำหรับตัวคุณเองที่คุณจะกลับมาและแก้ไขหรือคุณมุ่งมั่นที่จะเป็นผู้เชี่ยวชาญในเรื่องนี้หรือไม่? ถ้าเป็นเช่นนั้นทำไม
JBRWilkinson

CI เวิร์กโฟลว์อาจต้องใช้มัน - เพื่อให้คุณผลักดันที่จะโทการเปลี่ยนแปลงที่ยังไม่เสร็จเพียงเพื่อบูรณาการโดยเร็วที่สุดเท่าที่เป็นไปได้
laplasz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.