ฉันจะหาทรัพยากร“ SVN สำหรับผู้ใช้ Git” ได้จากที่ใด [ปิด]


18

ดังนั้นฉันจึงทำงานที่ บริษัท ใช้ SVN (แต่จะย้ายไปที่ Git ในอนาคต) ปัญหาคือฉันไม่รู้ SVN ฉันได้ลองใช้คำค้นหาของ Google มากมายและสิ่งที่ฉันหาได้ทั้งหมดคือ SVN-> Git tutorials "ทำไม Git ถึงดีกว่า SVN" บล็อกและ "cheat ชีต" ที่ให้คำสั่งที่คล้ายกัน (บางรายการ) ...

อ่านหนังสือ O'Reilly สั้น ๆ เกี่ยวกับ SVN คำแนะนำสั้น ๆ (แต่ไม่สั้นเกินไป ) สำหรับ SVN สำหรับผู้ใช้ Git คืออะไร


3
ในระยะสั้น: a) ไม่มีดัชนี b) svn up = git pull, c) svn กระทำ = git กระทำ && git push d) สาขาถูกจำลองโดยไดเรกทอรี ... ;-)
johannes

1
ฉันไม่แน่ใจว่าฉันสามารถทำสิ่งนี้ได้มากขึ้นในหัวข้อ ...
agent154

5
ไม่มีทาง. ถัดจากสิ่งใดก็ตามจะไม่น่าสนใจใน P.SE
JensG

@ agent154 ไม่ขอให้เราเป็นเครื่องมือค้นหาที่มาจากฝูงชนสำหรับคุณ ระบุปัญหาที่คุณมี - ปัญหาไม่ใช่ "ที่ฉันสามารถหาสิ่งต่าง ๆ บน svn" ของมัน "ฉันกำลังพยายามทำอะไรบางอย่างและฉันไม่สามารถหาวิธีที่จะทำได้" หากสิ่งนั้นมีความเฉพาะเจาะจงกับคำสั่ง 'svn' และคุณกำลังดำเนินการเกี่ยวกับวิธีการเขียนให้ถามใน Stack Overflow หากสิ่งนั้นเป็นเรื่องเกี่ยวกับเวิร์กโฟลว์และการจัดระเบียบของ svn (เมื่อใดที่จะรวมสาขาเมื่อไรจะรวมวิธีทำงานกับนักพัฒนาอื่น ๆ ) ให้ถามที่นี่

2
ฉันคิดว่าปัญหาที่พบคือการขาดทรัพยากรแม้จะมีความพร้อมจากระยะไกลสำหรับการทำความเข้าใจ SVN ในฐานะผู้ใช้ Git ตรงไปตรงมาฉันจะพบการสนทนาเกี่ยวกับประโยชน์ที่ยิ่งใหญ่นี้หลังจากที่ได้หลั่งไหลผ่านหน้าเว็บหลายหน้าของ Google / DuckDuckGo ผลไม่พบสิ่งอื่นใดนอกเหนือจากที่ OP กล่าวถึง
Metagrapher

คำตอบ:


8

การอ้างอิงที่เป็นที่ยอมรับคือการโค่นล้ม RedBook โดยไม่คำนึงถึงทักษะที่ผ่านมาของคุณอ่านสิ่งใหม่ ๆ และคุณจะได้รับข้อมูลการใช้งานทั้งหมดที่คุณต้องการ คนต่างด้าวส่วนใหญ่พูดว่า SVN นั้นง่ายต่อการเข้าใจมากกว่า git ดังนั้นมันจึงไม่ใช่เรื่องยากหรือยากที่จะเข้าใจดังนั้นคุณควรที่จะอ่านคำสั่งหลักเพียงเล็กน้อย บทการใช้งานพื้นฐานควรจะได้รับคุณและทำงานได้โดยไม่มีปัญหา

มีความแตกต่างที่สำคัญ 2:

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

การแตกแขนงนั้นเล็กน้อยการรวมกันนั้นใกล้จะแย่เท่าที่นัก apologists DVCS ต้องการทำโดยเฉพาะอย่างยิ่งถ้าคุณยึดติดกับสามมาตรฐาน "" ของโฟลเดอร์ระดับบนสุด (เรียกว่าลำต้นกิ่งก้านและแท็ก)

มีบางบิตที่ SVN เต้นคอมไพล์ไดเรกทอรีมาคำนึง - ที่คุณชำระเงินเพียงส่วนหนึ่งของ repo ของคุณ เมื่อคุณต้องการชิ้นส่วนเพิ่มเติมคุณจะอัพเดตเฉพาะสิ่งที่คุณต้องการ หากคุณมี repo ขนาดใหญ่ (เช่นผลิตภัณฑ์หลักและปลั๊กอินจำนวนมาก) สิ่งนี้ยอดเยี่ยม

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

หากคุณใช้ Windows ให้ใช้ TortoiseSVN มันสั่นสะเทือนอย่างรุนแรง


ขึ้นอยู่กับ การผสานกับ SVN กลายเป็นไม่ดีเมื่อไฟล์ถูกย้าย (ซึ่งเป็นรูปแบบการลบและเพิ่มการจัดการโดย SVN เอง) โดยผู้อื่นและเปลี่ยนแปลงโดยบุคคลอื่น นอกจากนั้นคำตอบที่ดี
JensG

1
ฉันพูดถึงปัญหาความขัดแย้งของต้นไม้ ... สถานะดังกล่าวเป็นปัญหาสำหรับ scms อื่น ๆ แต่ฉันเข้าใจว่า git ใช้ heuristic เพื่อตรวจสอบว่าไฟล์ที่ย้ายเป็นไฟล์เดียวกันหรือไม่หากการเปลี่ยนแปลงมีความสำคัญ ( เช่นไฟล์ที่ถูกแบ่งออกเป็น 2)
gbjbaanb

Git ไม่จำเป็นต้องมีการวิเคราะห์พฤติกรรมสำหรับการตรวจสอบการเปลี่ยนแปลงต้นไม้ - git mvมันต้องการให้ผู้ใช้สามารถย้ายไฟล์ด้วย SVN ได้svn moveแต่ตั้งแต่แยกทางและการผสานใน SVN เป็นชนิดของสับผมไม่เชื่อว่ามันจะสามารถแก้ปัญหาความขัดแย้งต้นไม้เช่นคอมไพล์ไม่ ...
Idan Arye

3
@IdanArye git mvมีการใช้งานเป็นเพิ่ม + ลบ git ใช้การวิเคราะห์พฤติกรรมเพื่อตรวจสอบว่าการย้ายหรือการคัดลอกเกิดขึ้นในระหว่างการกระทำ (ฉันคิดว่าค่าเริ่มต้นคือ "คือ 80% + ของไฟล์เหมือนกันหรือไม่")
Izkata

3

ใช้ git svn ถ้าเป็นไปได้ ฉันอยู่ในสถานการณ์ของคุณและหลังจากครึ่งปีของความยุ่งยากฉันเปลี่ยนไปเป็น svn คอมไพล์และมีความสุขตั้งแต่นั้นมา

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

อาจจะไม่เหมาะสำหรับการโค่นล้มการใช้งานขั้นสูง แต่เนื่องจากคุณใช้ git ภายในเครื่องทุกอย่างก็โอเค

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

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

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