CVS บน OS X Mavericks


17

เห็นได้ชัดว่า Apple ได้ลบ CVS ภายใต้ OS X 10.9 Mavericks devtools (และใช่มันหายไปจริงๆ) สำหรับมือใหม่CVS เป็นระบบรุ่นพร้อมกันซึ่งเป็นเครื่องมือในการรักษาไฟล์ให้ทันสมัยระหว่างเครื่องและผู้ใช้ที่แตกต่างกัน (นักพัฒนา)

ฉันมีโปรเจ็กต์ดั้งเดิมที่ยังต้องการมันอยู่ (ไม่ฉันไม่สามารถเปลี่ยนมันให้ใช้ SVN, คอมไพล์ได้น้อยลง)

สถานที่ที่ดีที่สุดในการรับรุ่นที่ทำงานภายใต้ OS X Mavericks คืออะไร


คุณตรวจสอบว่ามันยังอยู่/usr/bin/cvsหรือไม่?
nohillside

ใช่มันหายไปจริงๆ
Andrew Jaffe

คำตอบ:


16

วิธีที่ง่ายที่สุดสำหรับโปรแกรมส่วนใหญ่คือการติดตั้งด้วยตัวจัดการแพ็คเกจเช่น Macports, Homebrew หรือ Fink พนักงานยกกระเป๋าจะได้ทำการแก้ไขปัญหาเกี่ยวกับการย้ายรหัสไปยัง OSX ดังนั้นจึงควรง่าย ๆ ดังต่อไปนี้ (สำหรับMacports )

  1. ติดตั้ง macports ดาวน์โหลดไฟล์. pkg และเรียกใช้
  2. ติดตั้ง Xcode และเครื่องมือบรรทัดคำสั่ง
  3. เพิ่ม/opt/local/binไปยังเส้นทางของคุณ - โปรแกรมติดตั้งพยายามทำสิ่งนี้ให้คุณดังนั้นคุณอาจต้องตรวจสอบ
  4. ติดตั้งพอร์ต sudo port install cvs
  5. เรียกใช้ cvs ด้วยพา ธ เต็ม/opt/local/bin/cvsหรือใช้ PATH ของคุณ

16

ผู้จัดการแพคเกจยูนิกซ์ ish เป็นวิธีที่ชัดเจนไป ฉันได้เปลี่ยนจากตำรวจและMacportsเป็นhomebrewซึ่งมีสูตรสำหรับ CV:

brew install cvs

เพื่อความสมบูรณ์ในอดีตคุณมีก่อนที่จะใช้ (ยากเล็กน้อยเพื่อค้นหา) สูตรสำหรับ CVSbrew install homebrew/dupes/cvs :

หลังจากการทดสอบเพียงเล็กน้อยเท่านั้นดูเหมือนว่าจะได้ผล


3
ฉันลองคำสั่งที่สั้นกว่านี้เล็กน้อยbrew install cvs(OS 10.9, Homebrew 0.9.5); ติดตั้ง CVS 1.12.13 ซึ่งดูเหมือนว่าใช้งานได้
nknight

3
ใช่คำสั่งของ nknight นั้นถูกต้อง คำสั่งเปลี่ยนไปเนื่องจากสูตร CVS ได้ย้ายจาก homebrew-dupes ไปเป็น Homebrew core ในเดือนพฤศจิกายน 2013
herzbube

2

แก้ไข: ดังที่ได้กล่าวไว้ในคอมเม้นต์ git ต้องการไคลเอนต์ cvs ที่ใช้งานได้ซึ่งทำให้วิธีนี้เป็นเพียงเลเยอร์ interop ที่ดี แต่ไม่ใช่วิธีแก้ปัญหาของ csv client ที่หายไป

อีกตัวเลือกหนึ่งคือใช้git เป็นไคลเอนต์ cvsและกดไปยังเซิร์ฟเวอร์ CVS โดยตรง

ทั้งนี้ขึ้นอยู่กับความต้องการของคุณนี่อาจเป็น cvs interop + ข้อดีของการใช้ git ภายในเครื่อง


ฉันไม่รู้ว่าคุณทำได้ เจ๋งมาก!
Andrew Jaffe

2
ฉันลองสิ่งนี้ แต่git-cvsimportดูเหมือนว่าจะต้องใช้ไคลเอนต์ CVS ดังนั้นจึงเป็นปัญหาไก่และไข่
เดวิดโมล

1
ขอบคุณ @DavidMoles ฉันเปลี่ยนคำตอบเพื่อให้แน่ใจว่าทุกคนตระหนักถึงข้อ จำกัด นี้ ฉันไม่เคยลองด้วยตัวเองมาก่อน
OliverS

0

CVSNT ทำงานบน Mac OS X 10.9 และรองรับการเข้ารหัส HQX ของทรัพยากรเป็นต้นมี Beta สำหรับ 10.9 ที่นี่: http://march-hare.com/cvspro/#downcvsnt

หากคุณเคยใช้ Mac CVS ​​X มาก่อนหน้านี้ (CVSNT) คือ 'บรรทัดคำสั่ง' ที่รวมไว้ก่อนหน้านี้


1
ยินดีต้อนรับสู่เว็บไซต์ โปรดดูที่apple.stackexchange.com/help/behaviorโดยเฉพาะส่วนที่เกี่ยวกับการโปรโมตตนเอง
nohillside

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

0

ฉันเพิ่งมีปัญหาเดียวกันนี้และปัญหาใหญ่กับ Macports, Fink และอื่น ๆ ก็คือพวกเขาดึงการพึ่งพาอื่น ๆ จำนวนมากซึ่งสร้างความสับสนและไม่จำเป็นหากคุณต้องการเพียงเครื่องมือเดียวเช่น CV ในกรณีของฉันพยายามติดตั้งโดยใช้ macports ทำให้ป๊อปอัพขอให้ฉันติดตั้ง java compiler (?!) และอีกหลายสิบแพ็กเก็ตต้องถูกสร้างขึ้นดังนั้นฉันจึงดึง eject ออกอย่างรวดเร็ว :)

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

รับ cvs sourcecode จาก:

http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/

ยกเลิกการ tar ลงในโฟลเดอร์ป้อนโฟลเดอร์แล้วเรียกใช้. / config

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

หลังจากนี้ทำ "สร้าง" และคุณจะได้รับไบนารีใน src / cvs ที่คุณสามารถใส่ในโฟลเดอร์ ~ / bin หรือที่ใดก็ได้และตรวจสอบให้แน่ใจว่า PATH ของคุณชี้ไปที่นั่น


> ฉันสามารถทำสิ่งนี้และวางที่ไหนสักแห่งที่ฉันเดา นั่นจะดีและคุ้มค่าที่จะส่งคืน (ไม่ใช่เรื่องเร่งด่วนสำหรับฉันโดยทั่วไปฉันโชคดีกับ Homebrew)
Flash Sheridan

0

ติดตามคำตอบของ BjornWด้วยแพตช์

หลังจากดาวน์โหลดและยกเลิกการเก็บถาวรแหล่งที่มาจาก: http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/

คัดลอกโปรแกรมแก้ไขด้านล่างไปยังไฟล์พูดcvs-1.11.23.patchและจากนั้นใช้โปรแกรมแก้ไขกับ:

patch -d cvs-1.11.23 -p1 < cvs-1.11.23.patch

จากนั้นสร้างตามREADMEคำแนะนำไฟล์cvs-1.11.23 :

cd cvs-1.11.23
./configure
make
make install

นี่คือแพทช์:

diff -r -u cvs-1.11.23/lib/getline.c cvs-1.11.23-osx/lib/getline.c
--- cvs-1.11.23/lib/getline.c   2005-04-05 06:46:05.000000000 +1000
+++ cvs-1.11.23-osx/lib/getline.c       2017-01-31 12:04:19.000000000 +1100
@@ -154,13 +154,10 @@
   return ret;
 }

-int
-getline (lineptr, n, stream)
-     char **lineptr;
-     size_t *n;
-     FILE *stream;
+ssize_t
+     getline(char ** restrict lineptr, size_t * restrict linecapp, FILE *     restrict stream)
 {
-  return getstr (lineptr, n, stream, '\n', 0, GETLINE_NO_LIMIT);
+  return (ssize_t)getstr (lineptr, linecapp, stream, '\n', 0, GETLINE_NO_LIMIT);
 }

 int
diff -r -u cvs-1.11.23/lib/getline.h cvs-1.11.23-osx/lib/getline.h
--- cvs-1.11.23/lib/getline.h   2005-04-05 06:46:05.000000000 +1000
+++ cvs-1.11.23-osx/lib/getline.h       2017-01-31 12:03:21.000000000 +1100
@@ -11,8 +11,8 @@    

 #define GETLINE_NO_LIMIT -1

-int
-  getline __PROTO ((char **_lineptr, size_t *_n, FILE *_stream));
+ssize_t
+  getline(char ** restrict linep, size_t * restrict linecapp, FILE * restrict stream);
 int
   getline_safe __PROTO ((char **_lineptr, size_t *_n, FILE *_stream,
                      int limit));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.