เวิร์กโฟลว์ GIT ผู้พัฒนาเดี่ยว (ย้ายจาก FTP ตรงไปตรงมา)


11

ฉันกำลังพยายามตัดสินใจว่าการย้ายไปที่ VCS นั้นสมเหตุสมผลหรือไม่สำหรับฉัน ฉันเป็นผู้พัฒนาเว็บไซต์เดียวในองค์กรขนาดเล็ก (5 คน) ฉันกำลังคิดถึง VCS (Git) ด้วยเหตุผลเหล่านี้: การควบคุมเวอร์ชันการสำรองนอกสถานที่การเก็บรหัสส่วนกลาง (สามารถเข้าถึงได้จากที่บ้าน)

ในขณะนี้ฉันทำงานบนเซิร์ฟเวอร์ที่ใช้งานจริงโดยทั่วไป ฉัน FTP เข้าทำการแก้ไขและบันทึกจากนั้นอัปโหลดและรีเฟรช โดยปกติแล้วการแก้ไขจะเป็นไฟล์ธีม / ปลั๊กอินสำหรับ CMSes (เช่น concrete5 หรือ Wordpress) ใช้งานได้ดี แต่ไม่มีการสำรองข้อมูลและไม่มีการควบคุมเวอร์ชัน

ฉันสงสัยว่าวิธีที่ดีที่สุดในการรวม VCS เข้ากับกระบวนการนี้ ฉันจะมองเห็นการตั้งค่าเซิร์ฟเวอร์ Git บนเว็บเซิร์ฟเวอร์ของ บริษัท แต่ฉันไม่ชัดเจนว่าจะผลักดันการเปลี่ยนแปลงไปยังบัญชีลูกค้า (ปกติ VPSes บนเซิร์ฟเวอร์เดียวกัน) - ตอนนี้ฉันเพียงเข้าสู่ SFTP ด้วยรายละเอียดและสร้าง การเปลี่ยนแปลงโดยตรง

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

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

แก้ไข:ฉันได้ จำกัด ให้แคบลงเป็นสองตัวเลือกที่ดูสมเหตุสมผลที่สุด สิ่งแรกนั้นขึ้นอยู่กับคำตอบของ ZweiBlumenซึ่งการแก้ไขจะทำบนเซิร์ฟเวอร์ที่ใช้งานจริงและส่งจากเซิร์ฟเวอร์ Git (ภายนอก) นี่มีข้อดีที่เวิร์กโฟลว์ของฉันจะไม่เปลี่ยนแปลงมากนัก (มีขั้นตอนเพิ่มเติมในการทำภารกิจ แต่อย่างอื่นมันเหมือนกัน)

ตัวเลือกที่สองคือการทำงานในท้องถิ่นโดยใช้ XAMPP จากนั้นทำการยอมรับการเปลี่ยนแปลงจากเครื่องท้องถิ่น ฉันจะอัปโหลดบทความที่เสร็จสมบูรณ์ไปยังเว็บเซิร์ฟเวอร์จากเครื่องท้องถิ่น (ทันทีหลังจากที่ส่งมอบคอมมิทขั้นสุดท้ายให้กับ Git) ดูเหมือนว่าในทางทฤษฎี แต่ถ้าไซต์หลังจากนั้นต้องแก้ไขและฉันทำให้พวกเขาบนเซิร์ฟเวอร์สด (ตามปกติฉันจะทำ) แล้วฉันจะต้องคัดลอกไฟล์ที่มีการเปลี่ยนแปลงใน repo ท้องถิ่นของฉันด้วยตนเองจากนั้นยอมรับการเปลี่ยนแปลงเหล่านั้น เซิร์ฟเวอร์ Git ดูเหมือนจะซับซ้อนเกินควรและอาจเป็นการออกจากเวิร์กโฟลว์ปัจจุบันของฉันมากเกินไป

ฉันคิดว่ายอดเงินฉันจะให้ตัวเลือก # 1 ไปและดูว่าฉันได้รับ


1
สิ่งที่ต้องจำเกี่ยวกับคอมไพล์ (หรือ VCS แบบกระจายอื่น ๆ ) คือที่เก็บข้อมูลทั้งหมดอย่างน้อยก็ในทางเทคนิคแล้วก็คือเพื่อนร่วมงาน: ที่เก็บข้อมูลในเครื่องของคุณนั้นมีความ "จริง" เหมือนกับที่อยู่บนเซิร์ฟเวอร์จริงหรือที่เก็บข้อมูลสำรอง มันเป็นนโยบายของเวิร์กโฟลว์ของคุณที่ให้โครงสร้างพวกเขา - ดังนั้นหากคุณจริงๆต้องการให้ทำผลงานหลักบนเซิร์ฟเวอร์สดที่คุณสามารถ ...
comingstorm

ขอบคุณที่รู้ดี ความยืดหยุ่นโดยธรรมชาติของ Git ทำให้ยากที่จะหาจุดเริ่มต้น 'แนวปฏิบัติที่ดีที่สุด' นั่นคือจุดแข็งจากมุมมองของผู้ใช้ที่มีประสบการณ์ แต่พิสูจน์ได้ว่าเป็นจุดอ่อนจาก noob!
melat0nin

คำตอบ:


3

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

ฉันแน่ใจว่ามีวิธีอื่นในการจัดการสิ่งนี้ แต่ฉันพบว่ามันค่อนข้างตรงไปตรงมาและฉันอยู่ในสถานการณ์เดียวกับคุณ: นักพัฒนาเดี่ยวในองค์กรขนาดเล็ก (4 คน)


1
ขอบคุณสำหรับการตอบกลับของคุณ! นั่นหมายความว่าคุณดึงสแน็ปช็อตไปที่เครื่องของคุณทำการเปลี่ยนแปลงและยอมรับจากนั้นทำการร้องขอการดึงจากเซิร์ฟเวอร์สด (โดย SSHing) เกิดอะไรขึ้นถ้าการเปลี่ยนแปลงมีขนาดเล็กจริงๆ คุณใช้งานเว็บเซิร์ฟเวอร์ในพื้นที่เพื่อการพัฒนาหรือไม่? (ฉันไม่สามารถผ่านกระบวนการนั้นสำหรับการเปลี่ยนแปลง CSS อย่างง่าย ๆ .. ฉันบ้าไปแล้ว!)
melat0nin

1
สำหรับการเปลี่ยนแปลง CSS เล็กน้อยฉันจะทำการเปลี่ยนแปลงโดยตรงบนเซิร์ฟเวอร์แล้วยอมรับการเปลี่ยนแปลงนั้นไปยังที่เก็บจากเซิร์ฟเวอร์ เมื่อฉันต้องทำงานหนักมากขึ้นในไซต์ฉันจะอัปเดตไซต์บนเครื่อง dev ด้วยเวอร์ชันล่าสุดของไซต์จากที่เก็บ ฉันเดาว่ามันไม่สำคัญว่าคุณจะทำการเปลี่ยนแปลงที่ใด (เซิร์ฟเวอร์หรือเครื่อง dev) ตราบใดที่คุณส่งข้อมูลไปยังที่เก็บ
ZweiBlumen

แล้วคุณใช้เครื่องมืออะไรในเรื่องนี้? FTP เพื่อทำการเปลี่ยนแปลงไฟล์โดยตรงบนเซิร์ฟเวอร์จากนั้นเซสชัน SSH จะเปิดในพื้นหลังเพื่อทำคอมมิทกับเซิร์ฟเวอร์ Git ในตอนนี้และอีกครั้ง?
melat0nin

1
ใช่มันเป็นพื้น อันที่จริงฉันใช้การโค่นล้ม เรามีเว็บไซต์บน Windows รวมถึงเซิร์ฟเวอร์ Linux บนเดสก์ท็อประยะไกลบน Windows ให้ทำการเปลี่ยนแปลง CSS และส่งมอบโดยใช้ TortoiseSVN บน Linux ฉันใช้เซสชัน SSH และเป็นกลุ่มเพื่อทำการเปลี่ยนแปลง (แต่คุณสามารถ FTP การเปลี่ยนแปลงของคุณฉันเดา)
ZweiBlumen

ฉันได้ไปกับข้อเสนอแนะของคุณในการแก้ไขบนเซิร์ฟเวอร์แล้วจากนั้นผ่านทาง SSH ซึ่งฉันได้ทำไปสองสามวันแล้ว ดูเหมือนว่าจะทำงานได้ดีจริงๆขอบคุณ!
melat0nin

2

มันค่อนข้างง่ายในการสร้างpost-updateเบ็ดซึ่งการอัปเดตโดยอัตโนมัติ (ส่งออกด้วยgit archiveเป็นที่ต้องการด้วยเหตุผลด้านความปลอดภัย) ไดเรกทอรีข้อมูลเซิร์ฟเวอร์เว็บเมื่อคุณกดไปที่สาขาเฉพาะ

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


1

ฉันจะทำตามขั้นตอนเหล่านี้:

  1. ตั้งค่ารีโมตเซิร์ฟเวอร์ด้วยคู่คีย์สาธารณะ / ส่วนตัวที่เหมาะสมสำหรับการกด / ดึงจากระยะไกล
  2. ตั้งค่าการทดสอบและปล่อยสองสาขา
  3. พัฒนาในพื้นที่ด้วยสภาพแวดล้อมการทดสอบในสาขาการทดสอบ
  4. เมื่อคุณมีความสุขผสานกับสาขาที่วางจำหน่ายและผลักดันไปยังเซิร์ฟเวอร์ระยะไกล
  5. ขอบนเซิร์ฟเวอร์ระยะไกลเพื่ออัปเดตเป็นรุ่นล่าสุด

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


ดังนั้นฉันเข้าใจถูกต้อง - มีเซิร์ฟเวอร์สองตัว (1) สำหรับ Git, (2) เว็บเซิร์ฟเวอร์สดและเครื่องพัฒนาท้องถิ่นหนึ่งเครื่อง Dev จะทำในเครื่องจากนั้นส่งไปยังเซิร์ฟเวอร์ Git ที่มี hook สำหรับอัพเดทเซิร์ฟเวอร์สด
melat0nin

@ melat0nin นั่นเป็นวิธีหนึ่งที่ทำได้ คุณสามารถดึงเซิร์ฟเวอร์สดจากเซิร์ฟเวอร์ git เป็นงาน cron ได้เช่นกัน หรือคุณสามารถมี 2 เครื่อง เครื่อง dev ท้องถิ่นและเว็บเซิร์ฟเวอร์การผลิตสด ด้วยวิธีดังกล่าวการผลักดัน repo จากเครื่อง dev ไปยังเครื่องการผลิตจะอัพเดตไปยังสาขาการปล่อยใหม่ล่าสุดทุกครั้งที่คุณกด
Spencer Rathbun
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.