เราสามารถตั้งค่าเซิร์ฟเวอร์ svn บนเครื่องคอมพิวเตอร์โดยไม่ต้องเข้าถึงเครือข่ายหรือไม่?


25

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

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

ดังนั้นฉันจึงสงสัยว่าฉันจะสามารถตั้งค่าเซิร์ฟเวอร์ภายในเครื่องของ Windows XP ที่ฉันเท่านั้นที่เข้าถึงได้แม้ว่าฉันจะไม่มีการเชื่อมต่ออินเทอร์เน็ตหรือไม่?


15
ผมขอขอแนะนำให้ใช้คอมไพล์มากกว่าสิ่งที่ชอบ SVN สำหรับขั้นตอนการทำงานที่คุณได้อธิบาย
Daenyth

7
คุณสามารถติดตั้ง svn ภายในเครื่องและใช้งานได้อย่างแน่นอน ไม่มีปัญหากับเรื่องนั้น visualsvn.com/server/download
Alex

8
หรือ Mercurial; "hg init" สร้างที่เก็บในไดเรกทอรีที่คุณอยู่ ... จะไม่ง่ายไปกว่านั้นอีกหรือ
per per

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

3
@RichardM: ไม่มีอะไรผิดปกติในการแนะนำวิธีแก้ไขปัญหาอื่น ๆ หากการตั้งค่าและการพิสูจน์ในอนาคตง่ายขึ้น DVCS ให้ประโยชน์อื่น ๆ อีกมากมายหาก OP ต้องการร่วมมือกับผู้อื่นในวันเดียว
marco-fiset

คำตอบ:


31

วิธีที่ง่ายที่สุดในการตั้งค่าเซิร์ฟเวอร์ภายในคือใช้svnserve :

การโค่นล้มรวมถึง Svnserve - เซิร์ฟเวอร์แบบสแตนด์อะโลนที่มีน้ำหนักเบาซึ่งใช้โปรโตคอลที่กำหนดเองผ่านการเชื่อมต่อ TCP / IP ธรรมดา เหมาะสำหรับการติดตั้งขนาดเล็กหรือไม่สามารถใช้เซิร์ฟเวอร์ Apache แบบเต็มได้

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

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

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

หากคุณใช้TortoiseSVNคุณสามารถดูคำแนะนำได้ที่การสร้างพื้นที่เก็บข้อมูลด้วย TortoiseSVN :

  1. เปิด windows explorer

  2. สร้างโฟลเดอร์ใหม่และตั้งชื่อเช่น SVNRepository

  3. คลิกขวาที่โฟลเดอร์ที่สร้างขึ้นใหม่และเลือก TortoiseSVN →สร้างพื้นที่เก็บข้อมูลที่นี่ ....

ทันทีที่ดังกล่าวข้างต้นในหน้านี้ยังอธิบายถึงวิธีการสร้างพื้นที่เก็บข้อมูลจากบรรทัดคำสั่ง


ต้องบอกว่าผมจะแนะนำให้คุณมีลักษณะที่MercurialหรือGitเป็นทางเลือกให้กับsvnแม้ว่า หากคุณคุ้นเคยกับ TortoiseSvn คุณจะพบว่าTortoiseHgและTortoiseGitเป็นช่วงการเปลี่ยนภาพที่ง่ายรวมถึงช่วยให้คุณมีความยืดหยุ่นในการทำงานในลักษณะกระจายในภายหลังหากคุณต้องการ ตัวอย่างเช่นในอดีตที่ผ่านมาฉันใช้หน่วยความจำเพื่อโอนย้ายhgคลังเก็บระหว่างเครื่องที่ไม่มีการเข้าถึงเครือข่ายและเมื่อคุณทำงานในแบบที่คุณได้รับการสำรองข้อมูลฟรีลงในการต่อรองราคา


ช่างเป็นคำตอบที่ยอดเยี่ยม!
Steve

9

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

ในการใช้เซิร์ฟเวอร์นี้คุณมีไดเรกทอรีว่างใด ๆ ในการเรียกตำแหน่งที่ตั้ง CLI-command svnadmin พร้อมกับคำสั่งย่อยและพารามิเตอร์ที่เกี่ยวข้อง (ฉันจำไม่ได้ว่ามีโปรแกรมการจัดการในชุดไคลเอ็นต์ CLI หรือไม่และไม่สามารถทำได้ ตรวจสอบ - ฉันยังไม่ได้ติดตั้ง CLI svn-client เพียง TortoiseSVN ซึ่งมีโปรแกรมเหล่านี้ในตัวติดตั้งในรุ่น 1.7) - ฉันหวังว่าคุณจะสามารถค้นหาได้

svnadmin helpแสดงให้เรา subcommands ทั้งหมดที่เรามีความสนใจในขณะนี้ใน createsubcommand

svnadmin help create ให้รายละเอียดที่จำเป็นทั้งหมดสำหรับเรา

create: usage: svnadmin create REPOS_PATH

Create a new, empty repository at REPOS_PATH.

Valid options:
...

ที่จุดเริ่มต้นสำหรับ repo แรกเราสามารถละเว้นตัวเลือกการปรับแต่งทั้งหมดและจดจำเฉพาะรูปแบบหลักsvnadmin create REPOS_PATHนั่นคือ REPOS_PATH เป็นพา ธ สัมบูรณ์หรือพา ธ สัมพัทธ์ไปยังไดเรกทอรีที่ว่างเปล่าวางแผนไว้สำหรับ repo เนื่องจากคนส่วนใหญ่ที่ใช้ Windows สำหรับแอปพลิเคชันข้ามแพลตฟอร์มอาจคนอาจสับสนซึ่งสัญกรณ์ (ฟอร์เวิร์ด - หรือแบ็กสแลช) ที่จะใช้ในเส้นทาง (metoo) วิธีที่ปลอดภัยที่สุดคือcdไปยังที่ตั้ง - พาเรนต์ของไดเรกทอรี repo ในอนาคตหรือไดเรกทอรีเอง สำหรับการวางแผนซื้อคืนz:\Main ก่อน svnadmin create

Z:
cd \Main

และในที่สุด

svnadmin create .

ดังนั้นเราจึงสร้างพื้นที่เก็บข้อมูลว่างในไดเรกทอรีซึ่งแสดงใน Windows Explorer พร้อมไอคอนพิเศษเป็นตัวบ่งชี้เนื้อหา

RepoFolder

ตอนนี้ทุกครั้งที่ต้องการพื้นที่เก็บข้อมูลนี้เราใช้คำสั่ง SVN ตามปกติดูเหมือนว่าส่วน URL หรือพารามิเตอร์จะเป็นfile:///Z:/Main

c:\>svn ls file:///Z:/Main
branches/
tags/
trunk/

(ฉันเพิ่มแผนผังพื้นที่เก็บข้อมูลมาตรฐานใน repo)

มาตัด URL ที่แปลกประหลาดนี้กัน:

  • file:///สำหรับ URL ใด ๆ หมายถึงโปรโตคอลการเข้าถึงในกรณีโปรโตคอลของเรานั้นพิเศษและมีสามไม่ใช่สองสแลช
  • Z:/Main เป็นเส้นทางที่เต็มไปด้วย repo ด้วยไดรฟ์และเส้นทางภายในไดรฟ์มี Windows backslashes ทั้งหมดที่ถูกแทนที่ด้วย "คลาสสิค" ไปข้างหน้าทับ

จากจุดอื่น ๆ ที่เก็บนี้ไม่มีความแตกต่างจาก "Big Brothers" ที่มี Subversion-servers พิเศษ

RepoBrower สำหรับไฟล์: /// repo


1
@Lazy Badger OP ถามถึงวิธีการตั้งค่าเซิร์ฟเวอร์ svn อย่างชัดเจน คุณบอกให้เขาหลีกเลี่ยงการใช้เซิร์ฟเวอร์ใด ๆ เลย วิธีนี้หลีกเลี่ยงการตอบคำถามตามที่ระบุไว้
ทางเลือก

5
@ คณิตศาสตร์ - อันที่จริง OP ถามวิธีการตั้งค่าที่เก็บ SVN ไม่ใช่เซิร์ฟเวอร์ - ความแตกต่างอย่างมาก
Murph

5

ลองคำตอบที่แนะนำวิธีแก้ไขปัญหาแบบทั่วไปมากกว่าเฉพาะ

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


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

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

มีข้อดีอื่น ๆ สำหรับ DVCS เช่นกัน

ดังที่ฉันได้กล่าวไปแล้วฉันไม่คิดว่าคุณมีโซลูชัน VCS ที่เหมาะสมจริงๆจนกว่ารหัสของคุณจะอยู่ในเครื่องอย่างน้อยสองเครื่อง (โดยเฉพาะอย่างยิ่งฮาร์ดดิสก์สองตัวที่แตกต่างกันและโดยเฉพาะอย่างยิ่งในทำเลมากกว่าหนึ่งแห่ง พื้นที่เก็บข้อมูล "cloud" (skydrive, dropbox, et al) เป็นอีกวิธีหนึ่งที่ควรใช้งานเช่นกัน)

ในแง่ของการที่ DVCS - ฉันจะมองไปที่ Mercurial (Hg) และ Git และในความจริง ฉันใช้ Mercurial เพราะยังดีกว่าบน windows ...

หากคุณยอมรับเงื่อนไขของบริการที่โฮสต์ฉันเห็นด้วยจริง ๆ แล้วว่ามีเรื่องน่ายินดีมากมายที่จะยกย่อง github - แต่ก็มีหลายสิ่งที่ดีเกี่ยวกับ bitbucket และ Fogbugz / Kiln ... และสิ่งเดียวกันอาจเป็นจริงของบริการอื่น ๆ มากมาย ที่ฉันไม่ได้ระบุไว้ (เช่นhttp://beanstalkapp.com/ซึ่งถูกกล่าวถึงในการส่งผ่านให้ฉันใน Twitter วันนี้ก่อนหน้านี้)


2

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

อย่างไรก็ตามในระยะยาวคุณน่าจะดีกว่าด้วยการใช้ SCM แบบกระจายผู้สมัครที่ดีที่สุดที่เป็นคอมไพล์ (มีประสิทธิภาพมากขึ้น, เรียนรู้ที่สูงชัน, ทำงานได้ดีที่สุดกับ * ระวัง) และ Mercurial (มีประสิทธิภาพน้อยกว่าง่ายต่อการเรียนรู้ ดีใน windows และ * ระวัง) ด้วยสิ่งเหล่านี้สำเนาการทำงานของคุณจะมีพื้นที่เก็บข้อมูลทั้งหมดและคุณสามารถสร้างโคลนได้มากเท่าที่คุณต้องการ คุณสามารถเริ่มต้นจากภายในเครื่องและหากคุณตัดสินใจที่จะโฮสต์ที่เก็บข้อมูลภายนอกคุณก็เพียงทำการโคลนที่เก็บข้อมูลที่มีอยู่ของคุณไปยังตำแหน่งภายนอกและคุณสามารถซิงโครไนซ์ทั้งสองทิศทางได้ตลอดเวลา ยังดีกว่าเนื่องจากโคลนแต่ละรายการของคุณมีประวัติโครงการทั้งหมด SCM จึงมีระบบสำรองเป็นสองเท่า ด้วยการโค่นล้มหากเซิร์ฟเวอร์ของคุณตายและคุณยังไม่ได้สำรองข้อมูลประวัติของคุณจะหมดไป - ด้วย git

http://hginit.com/มีบทช่วยสอนที่ยอดเยี่ยมในการเริ่มต้นใช้งาน Mercurial


1

มีบริษัท โฮสติ้ง SVN ค่อนข้างน้อยที่เสนอบัญชีฟรีสำหรับนักพัฒนาซอฟต์แวร์หนึ่งหรือสองคนและไม่ต้องการให้รหัสของคุณเป็นแบบสาธารณะ ตรวจสอบแผนภูมิที่เชื่อมโยงกับค่าธรรมเนียม $ 0, OSS Required = NO ฉันนับผู้ให้บริการเก้ารายที่ตรงกับเกณฑ์เหล่านี้ในขณะนี้

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

  • คุณสามารถเข้าถึงรหัสของคุณได้จากทุกที่โดยไม่ต้องตั้งค่าเพิ่มเติม

  • การเก็บโค้ดไว้นอกไซต์ป้องกันคุณจากการล่มของฮาร์ดดิสก์ไฟไหม้ ฯลฯ

  • ค่าใช้จ่ายในการบริหารต่ำ


ฉันเห็นแนวคิดที่เหมาะสมในด้าน OP - เขาต้องการ SVN และต้องการในพื้นที่ (คำสุดท้าย - สำคัญที่สุด) ใช้งานแบบสบาย ๆ คุณตอบในกรณีการใช้งานที่แตกต่างกันซึ่งถือได้ว่า "ไม่ใช่คำตอบ" - อ่านข้อความของคุณอีกครั้งจากคำแรกโปรด! ผมไม่ได้ตั้งค่าสถานะของคุณและคนอื่น ๆ ตอบว่า "ไม่ได้เป็นคำตอบ" ในขณะที่อย่างเป็นทางการที่พวกเขาไม่ได้คำตอบ HTH
Lazy Badger

อ่าน LAST SENTENCE ล่าสุดของ OP: "ถ้าฉันสามารถตั้งค่าเซิร์ฟเวอร์ภายในเครื่อง windows xp ของฉันที่ฉันเท่านั้นที่เข้าถึงแม้ว่าฉันจะไม่มีการเชื่อมต่ออินเทอร์เน็ต?" - คำถามนี้เป็นข้อความภาษาอังกฤษล้วน คำถามนี้ต้องการคำตอบ ไม่ "คำตอบ" ของคุณมีความสัมพันธ์ในทางใด ๆกับคำถาม ?! ซื่อสัตย์กับตัวเองอย่างน้อยก็ตระหนักถึงความผิดพลาด
Lazy Badger

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