ฉันจะรักษาคุณภาพของรหัสโดยไม่มี SCM ได้อย่างไร


110

ฉันทำงานในสถาบันของรัฐ เทคโนโลยีที่ใช้อยู่ที่นี่และวิธีการพัฒนาซอฟต์แวร์นั้นค่อนข้างล้าสมัย

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

สถาบันไม่อนุญาตให้ฉันใช้ซอฟต์แวร์ SCM เช่น GIT หรือ SVN

อะไรจะเป็นวิธีที่ดีที่สุดในการรักษาคุณภาพรหัสและสามารถเพิ่มคุณสมบัติใหม่ในแอปได้ในภายหลัง

ฉันจะจำการเปลี่ยนแปลงที่ทำกับรหัสโดยไม่ทำลายได้อย่างไร

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

แก้ไข: เนื่องจากหลายคนแนะนำ Git พกพาฉันต้องเพิ่มข้อมูลเพิ่มเติม ฉันพยายามติดตั้งเซิร์ฟเวอร์ Visual SVN แต่ล้มเหลวเนื่องจากฉันไม่มีสิทธิ์ของผู้ดูแลระบบในการติดตั้ง ฉันพยายามดาวน์โหลด Git shell ปกติ แต่ไฟร์วอลล์หรือการตั้งค่าเครือข่ายไม่อนุญาตให้ฉันเข้าถึงหน้าดาวน์โหลด Git ฉันยังลองส่ง Git พกพาไปยังอีเมลซึ่งก็คือ Gmail Google ตรวจพบไฟล์ exe ในแพ็คเกจและมันก็ไม่อนุญาตให้ฉันดาวน์โหลด Git เวอร์ชั่นพกพาบนคอมพิวเตอร์ที่ทำงานของฉัน อีกสิ่งหนึ่งที่ฉันต้องพูดถึงคือนโยบายเครือข่ายที่ใช้กับคอมพิวเตอร์ที่สถาบันไม่อนุญาตให้ใช้การจัดเก็บ USB devces คุณสามารถใช้พอร์ต USB เพื่อชาร์จสมาร์ทโฟนหรือใช้พลังงานบางอย่างเช่นลำโพงขนาดเล็ก เช่นเดียวกับบางคนที่กล่าวถึงมีคอมพิวเตอร์ที่ไม่อนุญาตแม้แต่อินเทอร์เน็ต


4
คุณสามารถข้ามตัวกรองประเภทไฟล์ gmail ได้โดยเปลี่ยนชื่อเป็นนามสกุล "ที่รู้จักกันดี" เช่น. mp3, .zip
Pac0

2
ฉันถามตัวเองว่าทำไมถึงทำให้คำถามนี้ยังมี upvotes มากในปี 2560 - ฉันกลัวจริงๆ
Ole K

9
หางานอื่น คนเหล่านี้เป็นไดโนเสาร์ที่ไม่มีเหตุผล คุณจะพบความพึงพอใจในการทำงานมากขึ้นกว่าที่อื่นที่ต้องการให้คุณใช้เครื่องมือที่ทันสมัย
Rob K

5
ไม่มีเหตุผลที่สถาบันของรัฐไม่ควรใช้ SCM ในความเป็นจริงพวกเขาอาจทำลายกระบวนการและกฎการตรวจสอบที่หลากหลายโดยไม่ใช้ SCM ฉันขอแนะนำให้คุณโจมตีจากมุมนั้น
jk

2
@jk นำมาซึ่งจุดที่ดีจริงๆ หากมีข้อบกพร่องทำให้เกิดการสูญเสียทางการเงินทำให้เกิดการฉ้อโกงหรือส่งผลให้คนที่ได้รับบาดเจ็บหรือเสียชีวิตผู้ตรวจสอบบัญชีจะลงมาหาคุณเช่นสิงโตในลูกแกะ - และบางคนจะสูญเสียงานของพวกเขา คุณมีโอกาสมากที่สุด ผู้บริหารระดับสูงนั้นจะไม่เสี่ยงกับเงินบำนาญสำหรับคนที่ชอบคุณ
Greg Burghardt

คำตอบ:


175

คุณสามารถจำลองการควบคุมแหล่งที่มาของบทบาทอย่างอิสระด้วยเครื่องมือง่ายๆสามอย่าง:

  • ซอฟต์แวร์สำรองข้อมูล (Commits / Check-ins)
  • โฟลเดอร์ (สาขา)
  • ทำการผสานไดเรกทอรีระหว่างสองไดเรกทอรีโดยใช้เครื่องมือเช่น KDiff3 (การรวมสาขา)

โดยทั่วไปเวิร์กโฟลว์ของคุณจะกลายเป็น:

  1. สร้างโฟลเดอร์ใหม่ (สาขาใหม่)
  2. คัดลอกไฟล์ไปยังโฟลเดอร์ใหม่ (สาขาใหม่) จากโฟลเดอร์ที่มีอยู่ (สาขาที่มีอยู่)
  3. ทำการสำรองข้อมูลของโฟลเดอร์นั้น (สร้างสาขาใหม่ให้เสร็จ)
  4. ทำงานบางอย่าง
  5. สร้างการสำรองข้อมูลของโฟลเดอร์ใหม่ (กระทำ)
  6. ทำไดเรกทอรีผสานจากโฟลเดอร์หนึ่งไปยังอีก (รวม)
  7. ทำการสำรองข้อมูลอื่นในโฟลเดอร์อื่น (คอมมิชชันผสาน)

ระบบควบคุมแหล่งที่มาเสาหินมากขึ้นเช่น SVN หรือ TFS โดยทั่วไปทำสิ่งนี้ให้คุณหลังฉาก


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

แต่อย่างน้อยคุณก็สามารถเริ่มต้นรถบัสได้


41
นี่เป็นคำตอบที่ถูกต้องจริง ๆ ที่กำหนดข้อ จำกัด นอกจากนี้ยังเป็นวิธีที่เราทำก่อนที่ VCSes จะกลายเป็นสิ่งที่
Blrfl

35
+1 แม้ว่าอาร์กิวเมนต์ตัวนับที่ง่ายสำหรับเรื่องนี้จะอยู่ในรายการ ... เราเคยเขียนโปรแกรมด้วยบัตรตอกเช่นกัน แต่ไม่ได้หมายความว่าเราควรทำอีกครั้ง
Newtopian

25
+1 - สำหรับการตอบคำถาม ไม่มีการควบคุมแหล่งที่มาในงานแรกของฉันและนี่คือวิธีที่เราทำสิ่งต่าง ๆ หมายเหตุ: มีเพียงเราสองคนเราทำได้ดีและส่วนใหญ่เราทำงานในโครงการที่แยกต่างหากและด้วยการเข้าใจถึงปัญหาหลังเหตุการณ์มันก็ยังเป็นความคิดที่ไม่ดี ความซับซ้อนของทีมเพิ่มเติมใด ๆ และมันจะเป็นฝันร้าย
Bob Tway

18
ฉันสงสัยว่า OP จะสามารถติดตั้ง / ดาวน์โหลดเครื่องมือเช่น KDiff3 ได้ หากเขาไม่สามารถติดตั้งคอมไพล์ในพื้นที่ได้ฉันสงสัยว่าเขาจะสามารถคอมไพล์อะไรก็ได้ที่ทำงานในพื้นที่
อีวาน

5
@Ivan: หลังจากดูความคิดเห็นดูเหมือนว่า OP อยู่บนเครื่อง Linux ฉันพบว่าองค์กรที่ใช้เทคโนโลยีสแต็คนี้มักจะมีเครื่องมือ diff / merge จำนวนหนึ่งซึ่งเป็นส่วนหนึ่งของการสร้างเดสก์ท็อปปกติและ kdiff3 นั้นค่อนข้างธรรมดา อาจมีคนอื่นที่ทำไดเรกทอรีรวมเกินไปหรือไม่ หรือ OP ติดค้างอยู่การรวมไฟล์แบบหนึ่งต่อหนึ่ง (ick!) แต่ใช่สถานการณ์เช่นนี้แย่มาก
Greg Burghardt

139

แม้ว่าฉันทามติจะไม่ทำงานให้กับ บริษัท นี้แต่ฉันไม่เชื่อว่าจะตอบคำถามของคุณได้

คุณไม่สามารถจริงๆแทนที่ SCM

คุณอาจไม่ต้องการเสียงระฆังและเสียงนกหวีดตามปกติของระบบเป่าเต็ม ตัวอย่างเช่น บริษัท อาจปฏิเสธคำขอเซิร์ฟเวอร์ แต่อนุญาตให้ใช้ SCM ท้องถิ่น พวกเขาอาจไม่ชอบคอมไพล์ แต่อนุญาตการโค่นล้ม (หรือระบบการกำหนดเวอร์ชันอื่น ๆ )

มีคำถามแน่นอนว่า: เพื่อนร่วมงานของคุณใช้อะไรหรือพนักงานก่อนหน้านี้ หากคุณเป็นนักพัฒนาซอฟต์แวร์คนแรกพวกเขาก็ถึงเวลาที่จะผลักดันทรัพยากรที่คุณต้องการอย่างหนัก

ในที่สุดหาก บริษัท ของคุณไม่เคารพบทบาทและประสบการณ์ของคุณและจะไม่อนุญาตให้คุณใช้เครื่องมือที่คุณต้องการคุณจะต้องพบกับปัญหาที่เลวร้ายกว่า (และเครียดกว่า) กว่าการควบคุมแหล่งที่มา


11
แอพที่ฉันกำลังทำอยู่เป็นโครงการเดี่ยว และไม่ใช่ฉันไม่ใช่โปรแกรมเมอร์คนแรกที่นี่ หลายคนมาที่นี่และจากไป
ว.

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

6
@Vlad: คุณทราบดีว่า Git และ SVN ไม่ต้องการมากกว่าไดรฟ์เครือข่าย สำหรับโครงการ VB6 และบุคคลเดียวฉันอาจไปทำงานกับ SVN ง่ายกว่าที่จะจัดการกับไฟล์ไบนารี ฉันทำสิ่งนี้เป็นเวลาหลายปีจนกระทั่งเราแทนที่โปรแกรม VB6 ล่าสุด
Doc Brown

24
@ วลาด "หลายคนมาที่นี่แล้วก็ออกไป" ค้นหาวิธีการแสดงความนับถือที่จะบอกพวกเขาว่าวัฒนธรรม บริษัท นี้น่าจะเกี่ยวข้องกับการหมุนเวียนของพวกเขา
jpmc26

26
เตือนความจำ: ถามสิ่งที่ SCM บริษัท ใช้ในการสัมภาษณ์ หากคนไม่รู้จักหรือไม่บอกใครให้บอกพวกเขาขอบคุณสำหรับเวลาของคุณและเสียเวลาของฉัน
joojaa

25

โดยทั่วไปมีปัญหาการจัดการ (องค์กรของคุณไม่เข้าใจพื้นฐานของกระบวนการพัฒนาซอฟต์แวร์เช่นV-model ) ที่ทำให้เกิดความไม่สามารถในการใช้เวิร์กโฟลว์ยุคปัจจุบันวิธีการและเครื่องมือที่น้อยที่สุด นี่เป็นเรื่องปกติ (อ่านเกี่ยวกับหลักการของเปโตร )

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

ปัญหาหลักคือ: คุณทำงานคนเดียวในฐานรหัสของคุณหรือคุณทำงานกับเพื่อนร่วมงาน?

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

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

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

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

แต่คุณต้องใช้ SCM คุณอาจถามคำถามอื่นกับหัวหน้าของคุณ: ทีมของคุณควรใช้SCM ที่มีอยู่หรือควรสร้างล้อใหม่และสร้าง SCM ของคุณเอง? โดยทั่วไปแล้วผู้บังคับบัญชามักจะขัดกับความคิดในการคิดค้นล้อใหม่ หากคุณได้รับอนุญาตให้คิดค้นล้อใหม่ให้บอกหัวหน้าของคุณว่าเป็นงานเต็มเวลาเป็นเวลาอย่างน้อยหนึ่งปี (ซึ่งอาจทำให้หัวหน้าของคุณร้องไห้จากนั้นยอมรับวิธีที่ชัดเจน) และสนุกกับการทำ SCM ของคุณเอง ในกรณีที่ไม่น่าเป็นไปได้โปรดศึกษาระบบ SCM ที่มีอยู่และขอให้ระบบ SCM ของคุณเป็นเครื่องมือซอฟต์แวร์ฟรี (เพื่อใช้และปรับปรุงโดยทีมอื่น ๆ )

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

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

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

PS วิธีการทางเทคนิคสร้างกำหนดค่าติดตั้งแล้วใช้git (จากซอร์สโค้ดซอฟแวร์ฟรี) -or ที่สุด VCS- ซอฟแวร์ฟรีอื่น ๆบนเครื่อง (แม้จะไม่ได้รับอนุญาตผู้ดูแลระบบ) เป็นที่แตกต่างกันมากคำถาม (จะถามที่อื่น ๆ ) และเป็นไปได้ที่จะติดตั้งแล้วใช้gitโดยไม่ได้รับอนุญาตจากผู้ดูแลระบบหากคุณมีทรัพยากรเพียงพอ (เวลา, พื้นที่ดิสก์, คอมไพเลอร์ C, ฯลฯ ... )

ฉันพยายามติดตั้งเซิร์ฟเวอร์ Visual SVN แต่ล้มเหลวเนื่องจากฉันไม่มีสิทธิ์ของผู้ดูแลระบบในการติดตั้ง

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


5
คุณสามารถเข้าถึง Github และสร้าง Git จากแหล่งที่มาได้หรือไม่?
วิลเล็ม

5
@RobertHarvey Security จะต้องมีลำดับความสำคัญต่ำกว่าการทำงานของคุณ (องค์กรไม่ใช่งานของคุณโดยเฉพาะ) เพราะคุณจะปลอดภัยที่สุดถ้าคุณไม่ทำอะไรเลย และจากนั้นรัฐบาลก็ยุบองค์กรของคุณเพราะไม่เคยทำอะไรเลย (หรือแม้แต่น้อยกว่าองค์กรภาครัฐส่วนใหญ่) หรือคุณสูญเสียงานเนื่องจากองค์กรล้มละลาย (ถ้าไม่ใช่กองทุนของรัฐบาล) หรืออื่น ๆ
immibis

6
@immibis: ขอโทษ แต่นั่นเป็นคนฟาง ไม่มีสิ่งใดที่ปลอดภัยอย่างสมบูรณ์และความปลอดภัยที่เพียงพอไม่ต้องการให้คุณเสียสละผลิตผลหากคุณทำอย่างถูกต้อง โปรดทราบว่าวิธีที่ง่ายและมีประสิทธิภาพมากที่สุดในการรักษาความปลอดภัยที่มีประสิทธิภาพ (เนื่องจากข้อควรระวังในการจัดการผลิตภัณฑ์ที่เหมาะสม) คือการถอดปลั๊กออกจากอินเทอร์เน็ต
Robert Harvey

8
@RobertHarvey นั่นจะไม่หยุดพนักงานขโมย IP ของคุณ วิธีที่ง่ายที่สุดในการหยุดให้พนักงานขโมยทรัพย์สินทางปัญญาของคุณคือไม่มีทรัพย์สินที่จะขโมย คุณกล่าวว่าการรักษาความปลอดภัยเป็นสิ่งสำคัญอันดับแรกไม่ใช่อันดับที่สองหรือที่สามซึ่งในกรณีนี้ผลผลิตจะต้องมีลำดับความสำคัญที่สองหรือสามดังนั้นจึงควรลดความปลอดภัยลง
Immibis

3
@immibis คุณเสียงเหมือนใครบางคนที่ไม่มีประสบการณ์การทำงานในสภาพแวดล้อมเหล่านี้ คุณกำลังพูดถึงลูกค้าที่สามารถล็อคคุณและทิ้งกุญแจหากคุณขโมย IP ของพวกเขา เป็นสภาพแวดล้อมที่การจัดการข้อมูลที่ผิดพลาด (ไม่ขโมยทรัพย์สินทางปัญญาอย่างสมบูรณ์) อาจก่อให้เกิดอันตรายร้ายแรงต่อองค์กร การรักษาความปลอดภัยแน่นอนว่าเป็นเรื่องหลัก มันทำให้การทำงานในสภาพแวดล้อมนั้นเจ็บปวด
Berin Loritsch

11

สิ่งแรกที่ฉันจะทำคือการระบุเฉพาะสิ่งที่หน่วยงานของรัฐ (น่าจะเป็นแผนกไอที) คัดค้าน หากพวกเขามีพื้นที่เก็บข้อมูล แต่ไม่มีวิธีการโฮสต์ VM สำหรับเซิร์ฟเวอร์ปัญหาอาจเป็นไปได้ว่าแผนกไอทีกำลังบอกว่าไม่มีให้กับเซิร์ฟเวอร์ SVN หรือ GIT และนั่นเป็นข้อแตกต่างที่ยิ่งใหญ่ หากปัญหาคือประเทศที่กำเนิด - เช่นเราไม่เชื่อถือเครื่องมือที่สร้างโดยหน่วยงานต่างประเทศ - นั่นเป็นปัญหาที่แตกต่าง

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

หากคุณไม่สามารถใช้ Git ด้วยเหตุผลใด ๆ ก็ตามคุณมีตัวเลือกสองทางให้คุณ:

  • ความรู้: การไม่อนุญาตการควบคุมเวอร์ชันจะทำให้เกิดความเสี่ยงที่สำคัญ คุณต้องการความสามารถในการถอยออกจากการเปลี่ยนแปลงที่พิสูจน์แล้วว่ามีปัญหามากกว่า คุณต้องการความสามารถในการประหยัดเงินและเวลาของรัฐบาลและ SCM ก็ทำเช่นนั้น คุณต้องอธิบายอย่างชัดเจน คุณอาจต้องทำการวิเคราะห์ทางเลือกเพื่อขับรถกลับบ้าน
    • ทางเลือกหนึ่งจะเป็นโฮสต์ Git
    • ระบบไฟล์อื่น Git
    • เลือกอย่างน้อยหนึ่งเครื่องมือ แต่ไม่เกินสองเครื่องมือ SCM อื่น ๆ
    • และในที่สุดสิ่งที่ต้องการทำงานโดยไม่มีการควบคุมเวอร์ชัน
  • ไปสู่การพัฒนาในยุค 70: มีเหตุผลpatchและdiffถูกสร้างมานานแล้ว (80s) พวกเขาเป็นเทคโนโลยีที่ทำให้การควบคุมเวอร์ชันเป็นไปได้

การพัฒนาในยุค 70 มีลักษณะอย่างไร มันไม่สวย แต่เป็นวิธีที่เราเริ่มต้น แอปพลิเคชันมีขนาดเล็กกว่ามาก โดยพื้นฐานแล้วพวกเขามีสิ่งที่พบบ่อย:

  • มีแนวคิดของเป็นมาตรฐานทองคำ นี่คือซอร์สโค้ดหลักที่มีคุณสมบัติครบถ้วน
  • มีทีม Configuration Management (CM) ความรับผิดชอบของพวกเขาคือการเปลี่ยนแปลงจากการพัฒนาสู่มาตรฐานทองคำอย่างถูกต้อง นี่คือที่ที่คุณต้องการpatchและdiffเพื่อทดแทนทีม
  • คุณทำงานจากสำเนาของรหัสต้นฉบับในเครื่อง คุณเสร็จสิ้นฟีเจอร์ที่ครบถ้วนและส่งไปยังทีม CM เพื่อให้พวกเขารวมเข้าด้วยกัน มักจะมีเอกสารประกอบเพื่อให้ไฟล์ใหม่ถูกสร้างขึ้นและไฟล์ที่ล้าสมัยจะถูกลบ ฯลฯ
  • จากนั้นคุณแก้ไขข้อผิดพลาดใด ๆ จากกระบวนการรวม
  • ก่อนที่คุณจะเพลิดเพลินกับคุณสมบัติอื่นหรือแก้ไขข้อบกพร่องคุณจะได้รับสำเนามาตรฐานทองคำใหม่

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

นี่คือสิ่งที่คุณต้องรวมในการวิเคราะห์ทางเลือกของคุณ


ไม่นะคนที่นี่ไม่ถือว่าแผนกไอทีเป็นส่วนสำคัญของงาน พวกเขาคิดว่าเป็นแผนกรองซึ่งเป็นเพียงบริการไปยังแผนกอื่น ๆ ดังนั้นจึงสามารถประสบ :)
ลาด

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

5
ฉันใช้เวลานานในการให้ความรู้แก่ลูกค้าว่ามีค่าใช้จ่ายใดบ้างที่เกี่ยวข้องกับการตัดสินใจของลูกค้า การวิเคราะห์ทางเลือกเป็นวิธีที่ดีในการสื่อสารความหมายของการตัดสินใจเหล่านั้น แน่นอนว่ามันใช้งานได้นาน แต่มีเอกสารและการแก้ไขไม่กี่วันที่จะช่วยให้คุณประหยัดทั้งความปวดใจและปวดหัวในภายหลัง
Berin Loritsch

9

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

  1. ใช้Visual SourceSafeเป็น Emerson แนะนำในความคิดเห็น ฉันทำงานกับทีมที่ใช้ VS 2005 เมื่อหลายปีก่อนในขณะที่ บริษัท อื่น ๆ ส่วนใหญ่ใช้การควบคุมเวอร์ชันมาตรฐานใน Linux / Unix และพวกเขาใช้ Visual SourceSafe สำหรับ CM อย่างมีความสุข มันสวยแบบเก่า ณ จุดนี้ แต่ดีกว่าไม่มีอะไร
  2. พูดได้ดีกว่าไม่มีอะไรฉันอยู่ในลักษณะเดียวกัน หากคุณไม่สามารถใช้ VSS (บางทีอาจไม่ได้ติดตั้งปลั๊กอิน) และเนื่องจากคุณบอกว่ามีพื้นที่เก็บข้อมูลมากมายให้ใช้งานหวังว่าคุณจะได้รับอนุญาตให้ใช้งานบางส่วนได้ ฉันใช้โพรโทคอลควบคุมเวอร์ชันของไฟล์ ในตอนท้ายของทุกวันทำงานฉันจะคัดลอกรหัสฐานของฉันไปยังไดเรกทอรีประทับวันที่ใหม่ ถ้าฉันต้องการอ้างถึงงานก่อนหน้า (หรือย้อนกลับ) ฉันจะดูไดเรกทอรีเก่า ๆ ก่อนหน้านี้เพื่อค้นหาการเปลี่ยนแปลงที่ฉันต้องการ เนื่องจากคุณมี Visual Studio พร้อมใช้งานภายในสองสามชั่วโมงคุณอาจใช้ VS 2005 เพื่อเขียนเครื่องมือง่าย ๆ เพื่อช่วยคุณสร้างไดเรกทอรีและคัดลอกไฟล์โดยอัตโนมัติ

1
ฉัน +1 สำหรับตัวเลือกแรกของคุณ ตัวเลือกที่สองของคุณทำให้ฉันต้องการที่จะโยนขึ้น แต่ฉันเข้าใจ.
jpmc26

@ jpmc26 บางครั้งคุณแค่ทำงานในสภาพแวดล้อมที่ จำกัด ในปี 1990 (หรือรู้สึกว่ามันติดอยู่ในช่วงปี 1990) และคุณไม่มีทางเลือกอื่น ไม่ถูกใจ แต่ก็ดีกว่าไม่มีอะไร
Ogre Psalm33

8

พวกเขามีพื้นที่เก็บข้อมูลมากมาย

คุณได้รับอนุญาตให้ใช้มันในการตัดสินใจหรือไม่?

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

จนถึงตอนนี้คอมพิวเตอร์มีพฤติกรรมเหมือนผู้ใช้ทั่วไปห้ามให้ฉันติดตั้งซอฟต์แวร์บุคคลที่สาม

gitยังเป็นแอพพกพาเพื่อให้คุณสามารถติดตั้งในพา ธ $ HOME หรือ% USERPROFILE%


เป็นข้อสรุป: ฉันจะไม่ปล่อยให้พวกเขาห้ามผมใช้ SCM 1 ฉันจะใช้มัน "แบบส่วนตัว" หลังจากที่ทุกคนไม่สามารถบอกได้ว่ารหัสของคุณได้รับการพัฒนาโดยมีหรือไม่มีการตรวจสอบในบาง ...

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


3
ฉันไม่สามารถเปิดไซต์จากที่ดาวน์โหลด Git และเมื่อติดตั้ง Visual SVN Server มันจะล้มเหลวในขั้นตอนสุดท้ายด้วยสิทธิ์บนพีซีนี้
Vlad

3
@Vlad มันถูก จำกัด โดยไฟร์วอลล์ บริษัท ของคุณ? คุณได้รับอนุญาตให้เชื่อมต่อก้าน USB หรือไม่? ลิงค์นี้เข้าถึงได้หรือไม่ github.com/sheabunge/GitPortable/releases/download/…
Timothy Truckle

3
ฉันไม่ได้รับอนุญาตให้เสียบอุปกรณ์เก็บข้อมูล USB นอกเหนือจากการชาร์จสมาร์ทโฟนของฉัน
Vlad

18
การหลีกเลี่ยงการวางสิ่งต่าง ๆ บนคอมพิวเตอร์ของ บริษัท ไม่ว่าสิ่งเหล่านั้นจะสมเหตุสมผลเพียงใดคุณจะถูกไล่ออกและอาจทำให้คุณเดือดร้อนทางกฎหมาย อย่าทำมัน!
Sebastian Redl

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

7

สภาพแวดล้อมของคุณ

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

การใส่ก้าน USB และเรียกใช้. exe บางตัวอาจทำให้เกิดการยกเลิกในที่อื่นดังนั้นฉันจะไม่แนะนำให้คุณหลีกเลี่ยงสิ่งใด ๆ

ลองคอมไพล์อีกครั้ง

ตอนนี้คุณเลือก ฉันขอแนะนำคอมไพล์แทน svn สำหรับคุณ หากคุณกำลังทำโครงการเพียงคนเดียวอย่างไรก็ตาม git เป็นเพียงไดเรกทอรี.gitภายในแอปพลิเคชันรากของคุณไม่มีอะไรอื่น

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

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

ทำด้วยตนเอง

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

สร้าง "สาขา" โดยคัดลอกงานของคุณอีกครั้งและเมื่อถึงเวลาที่จะรวมกลับมารับความคิดสร้างสรรค์โดยใช้เครื่องมือ "diff" หรือ "diff3" ตามอำเภอใจ - ฉันไม่ทราบว่าคุณมีอะไรบ้างคุณจะต้อง หา

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

เห็นได้ชัดว่าถ้านี่ทำให้คุณคลั่งไคล้การหางานเป็นตัวเลือกเสมอ


5

ฉันคิดว่าผู้คนจำนวนมากที่นี่หายไปจาก "สถาบันรัฐบาล" ของคำถามนี้ เครือข่ายของรัฐบาลบางแห่งมีกฎระเบียบที่เข้มงวดมากเกี่ยวกับซอฟต์แวร์ที่อนุญาตให้ใช้กับพวกเขาและการละเมิดกฎเหล่านั้นถือเป็นความผิดที่ทนไฟซึ่งอาจเป็นอาชญากรรม ฉันจะผลักดันมันผ่านการจัดการเพื่อดูว่าคุณสามารถรับการเคลื่อนไหวที่ได้รับการอนุมัติในการติดตั้งซอฟต์แวร์ ฉันจะไม่ไปคาวบอยและติดตั้งสิ่งต่าง ๆ ด้วยตัวเอง หากคุณใช้ Linux / UNIX ดูว่ามีการติดตั้งคำสั่ง RCS (ci / co) หรือ SCCS (คำสั่ง sccs) หรือไม่ เหล่านี้เป็นเครื่องมือ SCM เก่าที่เคยเป็นมาตรฐานที่เป็นธรรม มันไม่ได้สวย แต่ดีกว่าสิ่งที่ฉันจะเขียนด้านล่าง :)

เนื่องจากคุณมีพื้นที่ดิสก์จำนวนมากให้สร้างแผนผังต้นไม้ พื้นฐานของ SCM ในขนาดเล็กคืออะไร? ความสามารถในการเช็คอินการเปลี่ยนแปลงดูสิ่งที่เปลี่ยนแปลงแท็กเนื้อหาและกลับไปใช้เวอร์ชันเก่าหากจำเป็น หนึ่งระดับเหนือต้นไม้ต้นกำเนิดสร้าง Makefile หรือสคริปต์ขึ้นอยู่กับสิ่งที่คุณมีอยู่ซึ่งทำสิ่งต่อไปนี้ (เหล่านี้คือกลิ่นของ Linux / UNIX คำสั่ง Windows จะแตกต่างกัน)

ทำให้ checkin - cp -a source-tree source-tree-date (อย่างน้อยถึงนาทีถ้าไม่ใช่ที่สองเช่น source-tree-20171205115433)

ทำให้สถานะ - diff -R source-tree source-tree-date | น้อยกว่า (อาจมีตรรกะเล็กน้อยที่นี่ใช้ค่าเริ่มต้นในการสำรองข้อมูลล่าสุดหรือให้ข้อโต้แย้งเพื่อให้แตกต่างกับรุ่น

ทำให้แท็ก - ln -s source-tree-date release1.0 (สร้างลิงก์ไปยังเวอร์ชันเฉพาะ)

ทำให้ย้อนกลับ - rm -r source-tree && cp -a source-tree-date ซอร์สต้นไม้


1
คำสั่ง Windows จะแตกต่างกัน - ฉันเดาว่าถ้าคุณให้คำสั่ง windows ที่เทียบเท่าจะเป็นคำตอบที่ดีสำหรับคำถาม ฉันเชื่อว่าระบบปฏิบัติการที่ใช้ที่นี่คือ windows (เนื่องจาก VS 2005)
Emerson Cardoso

1
FWIW ต่างกันไม่มีอยู่ใน Windows สิ่งที่ใกล้เคียงที่สุดดูเหมือนจะเป็น fc.exe ซึ่งใช้ได้กับไฟล์สองไฟล์เท่านั้น (ไม่ใช่ในไดเรกทอรี) ส่วนที่เหลือทั้งหมดมีคู่ที่ตรงไปตรงมา
fede s

4

ขายให้กับพวกเขา

คุณออกความคิดเห็นนี้ :

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

ไปที่หัวหน้าของคุณแล้วพูดบางอย่างในเส้นเลือดนี้:

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

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

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

บทสรุประดับสูงที่นี่คือคุณต้องใส่ในแง่ที่พวกเขาสามารถเข้าใจและมีแนวโน้มที่จะคิดว่ามันคุ้มค่า:

  • การเพิ่มทรัพยากร (ฮาร์ดแวร์และบุคคล) เพื่อวัตถุประสงค์อื่น
  • ความเสี่ยงต่ำกว่า (ข้อผิดพลาดของมนุษย์เทคโนโลยีที่เสถียร)
  • ผลผลิตเพิ่มขึ้น
  • ค่าใช้จ่ายเล็กน้อยในการติดตั้ง

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


1

หลังจากอ่านคำถามและความคิดเห็นมากมายแล้วฉันเข้าใจว่าคุณมีข้อ จำกัด / สถานการณ์ดังต่อไปนี้:

  • 1 คนต่อโครงการ
  • คุณไม่สามารถใช้เครื่องมือภายนอกอื่นนอกเหนือจาก Visual Studio 2005 สำหรับโครงการของคุณ คุณไม่สามารถใช้ GIT หรือ SCM อื่น ๆ ได้
  • ในขณะที่ทำงานในพื้นที่คุณไม่สามารถปล่อยให้โครงการอยู่ในสภาพเสียเนื่องจากคุณมีการสำรองข้อมูลอัตโนมัติเป็นครั้งคราวและคุณต้องทำให้มันทำงานได้ตลอดเวลา
  • คุณต้องมีประวัติเพื่อติดตามการเปลี่ยนแปลง

หากคุณไม่สามารถใช้ Visual Source Safe (ซึ่งมีปลั๊กอินทำงานกับ VS 2005) คุณสามารถใช้วิธีอื่นได้

จากรายการด้านบนเราขอแนะนำให้คุณจัดระเบียบโฟลเดอร์โครงการของคุณเช่นด้านล่าง:

trunk           //last functional version of the app. IMPORTANT: YOU DON'T WORK WITH THIS FOLDER
    UnitTests   //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln
temp              //your working folder; has structure similar to trunk; changes will be commited to trunk;
    UnitTests     //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln  
build
    .history    //folder to contain changes in files and your comment (like commits in git)
    build.bat   //calls MSBuild to build temp\YourProject.sln, and run all unit tests
    save_on_trunk.bat   //if build is working, saves info from "diff.bat" in folder within ".history" with timestamp, and also overrides "trunk" with content from "temp"
    diff.bat         //compares files from "temp" and "trunk", using "dir" and "fc" commands
    history.bat  //outputs content from .history folder (contains file changes and comments)

กฎพื้นฐานที่ต้องปฏิบัติตามที่นี่:

  • การควบคุมรหัสของคุณจะถูกดำเนินการภายในโฟลเดอร์ของโครงการ
  • คุณไม่เคยทำงานใน "ลำตัว";
  • คุณทำงานใน "ชั่วคราว"ดำเนินการทดสอบหน่วยโทรbuild.batแล้วsave_on_trunk.bat ;
  • สิ่งสำคัญ: ใช้การทดสอบหน่วยที่ทำงานในการแยกทั้งหมด; คุณต้องการสิ่งนี้เพื่อรับประกันว่ารหัสใหม่จะไม่ทำให้เกิดความเสียหาย
  • เนื่องจากคุณมีการสำรองข้อมูลอัตโนมัติโอกาสในการสูญเสียรหัสจะน้อยลง ดังนั้นคุณจะต้องทำให้รหัส "ลำตัว" อยู่ในสถานะทำงานตลอดเวลา

1
ฉันขอให้ผู้ลงคะแนนให้ข้อเสนอแนะบางอย่างที่นี่ ฉันต้องการปรับปรุงคำตอบสำหรับคำถาม " รักษาคุณภาพของรหัสโดยไม่มี SCMหรือไม่ "
Emerson Cardoso

1

คุณมีทางออกทางเทคนิคหมดแล้ว การแก้ปัญหาทางการเมืองยังคงอยู่

1) รวมนักพัฒนา หากมีสหภาพอยู่แล้วให้ท้าทายตำแหน่งของพวกเขาโดยไม่แสดงถึงระดับของพนักงานที่เป็นนักพัฒนาซอฟต์แวร์ หากการรวมกลุ่มนักพัฒนาซอฟต์แวร์ล้มเหลวในการรับการสนับสนุนจากครึ่งนักพัฒนาซอฟต์แวร์ GO คุณเป็นคนไม่ดี

2) โฆษณาทางหนังสือพิมพ์ หากรัฐบาลของคุณไม่รับประกันการพูดฟรีในฐานะที่เป็นเรื่องทางกฎหมายคุณจะถูกไล่ออก


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

1
คำตอบนี้จะสูญเสียสูญเสียสถานการณ์
SaggingRufus

@SaggingRufus: สหภาพสามารถเรียกร้องอย่างแน่นอนว่าพวกเขาได้รับเครื่องมือที่เหมาะสมสำหรับงาน ลูกจ้าง - นายจ้างไม่สามารถไปที่สื่อสำหรับ บริษัท เอกชน แต่หน่วยงานของรัฐสามารถรับผิดชอบได้
โจชัว

1
ในฐานะที่เป็นคนที่ทำงานให้กับสหภาพใน บริษัท เทคโนโลยีฉันมั่นใจได้เลยว่าเรามี 0 อย่างแน่นอน สหภาพจะไม่มีสถานที่เว้นแต่จะเป็นปัญหาด้านสุขภาพและความปลอดภัย ฉันเห็นด้วยกับคุณในบางระดับ หากนี่ไม่ใช่ softwear "เครื่องมือที่เหมาะสมสำหรับงาน" ส่วนของความคิดเห็นนั้นจะถูกต้อง สมมติว่าคุณเป็นช่างไม้ในสหภาพและนายจ้างของคุณปฏิเสธที่จะซื้อบันไดและบอกว่าคุณต้องวางเก้าอี้ 7 ตัวซ้อนทับกันเพื่อปีนขึ้นไป จากนั้นคุณสามารถพูดได้ว่ามันเป็นหน้าที่ของนายจ้างที่จะต้องจัดหาเครื่องมือที่เหมาะสมให้กับคุณ ณ จุดนี้มันได้กลายเป็นปัญหาด้านความปลอดภัย
SaggingRufus

0

Git สำหรับ Windows มีรุ่น "แบบพกพา" คุณสามารถคัดลอกสิ่งนี้ไปยังพีซีของคุณหรือเก็บไว้ในเมมโมรี่สติ๊กโดยไม่จำเป็นต้องติดตั้งอะไรเลย หากปัญหาคือการติดตั้งเพียงแค่นี้จะเป็นการแก้ปัญหา

โปรดทราบว่าหากพวกเขาตรงข้ามกับ SCM คุณอาจต้องการถามคำถามที่ชัดเจนเกี่ยวกับ ISO-9001, DO-178B หรือมาตรฐานการพัฒนาซอฟต์แวร์อื่น ๆ ที่เกี่ยวข้อง


1
ดูเหมือนว่าจะทำซ้ำเพียงจุดที่ทำและอธิบายในคำตอบก่อนหน้านี้ที่โพสต์เมื่อ 20 ชั่วโมงที่ผ่านมา
gnat

@gnat ฉันไม่เห็นลิงก์ที่นั่นหรือ
เกรแฮม

3
คุณสามารถเพิ่มลิงค์ของคุณเป็นความคิดเห็นในคำตอบอื่น ๆ
icc97

0

เพียงแค่เรียกใช้คอมไพล์บนไดเร็กตอรี่เปล่าโดยไม่ต้องมีเซิร์ฟเวอร์เลย มันไม่สำคัญเลยว่าไม่มีใครใช้การควบคุมเวอร์ชันเพราะคุณสามารถควบคุมเวอร์ชันของไดเรกทอรีได้ Git ได้รับการออกแบบสำหรับสถานการณ์การแนะนำ SCM อันธพาลนี้และทำงานได้ดี

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


-1

จริงๆแล้วมีสามสิ่งแยกต่างหากที่คุณต้องการยืนยันในฐานะนักพัฒนามืออาชีพ: การตรวจสอบโค้ดประวัติรุ่นและการติดตามคำขอเปลี่ยนแปลง

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

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

(เห็นได้ชัดว่าทั้งหมดนี้ไม่ใช่คำแนะนำที่ควรดำเนินการเว้นแต่คุณจะอยู่ในสถานที่ทำงานที่เลวร้ายอย่างที่ OP เห็นได้ชัด)

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