CVS trên OS X Mavericks


17

Rõ ràng, Apple đã loại bỏ CVS theo devtools OS X 10.9 Mavericks (và vâng, nó thực sự đã biến mất). Đối với người không quen thuộc, CVS là Hệ thống Phiên bản đồng thời , một công cụ để giữ các tệp cập nhật giữa các máy khác nhau và người dùng (nhà phát triển).

Tôi có một số dự án cũ vẫn yêu cầu nó (không, tôi không thể thay đổi nó để sử dụng SVN, ít git hơn nhiều).

Đâu là nơi tốt nhất để có được một phiên bản hoạt động theo OS X Mavericks?


Bạn đã kiểm tra xem nó vẫn còn trong /usr/bin/cvs?
nohillside

Đúng, nó thực sự đã biến mất.
Andrew Jaffe

Câu trả lời:


16

Cách dễ nhất cho hầu hết các chương trình là cài đặt với trình quản lý gói như Macports, Homebrew hoặc Fink. Các porter sẽ giải quyết các vấn đề về chuyển mã sang OSX, vì vậy nó sẽ đơn giản như sau (đối với Macports )

  1. Cài đặt macports, tải xuống tệp .pkg và chạy nó
  2. Cài đặt Xcode và các công cụ dòng lệnh của nó
  3. Thêm /opt/local/binvào đường dẫn của bạn - trình cài đặt cố gắng làm điều này cho bạn để bạn có thể chỉ cần kiểm tra
  4. Cài đặt cổng sudo port install cvs
  5. Chạy cvs với đường dẫn đầy đủ /opt/local/bin/cvshoặc sử dụng PATH của bạn

16

Một người quản lý gói unix-ish rõ ràng là cách để đi. Tôi đã chuyển từ finkMacports sang homebrew , nơi có công thức cho cvs:

brew install cvs

Để hoàn thiện lịch sử, trước đây bạn phải sử dụng công thức (hơi khó tìm) cho cvs : brew install homebrew/dupes/cvs.

Chỉ sau khi thử nghiệm rất tối thiểu, nó dường như hoạt động.


3
Tôi đã thử lệnh ngắn hơn một chút brew install cvs(OS 10.9, Homebrew 0.9.5); nó đã cài đặt CVS 1.12.13, có vẻ như hoạt động.
nknight

3
Vâng, lệnh của nknight là đúng. Lệnh đã thay đổi vì công thức CVS đã chuyển từ lõi homebrew sang lõi Homebrew vào tháng 11 năm 2013.
herzbube

2

chỉnh sửa: Như đã nhận xét trong các bình luận, git yêu cầu một máy khách cvs hoạt động, làm cho cách tiếp cận này chỉ là một lớp interop đẹp nhưng không phải là giải pháp cho vấn đề của máy khách csv bị thiếu.

Một tùy chọn khác là sử dụng git làm máy khách cvs và trực tiếp đẩy đến máy chủ CVS.

Tùy thuộc vào nhu cầu của bạn, điều này có thể đủ cvs interop + một lợi thế của việc sử dụng git cục bộ.


Tôi không có ý tưởng bạn có thể làm điều đó. Rất tuyệt!
Andrew Jaffe

2
Tôi đã thử điều này, nhưng git-cvsimportdường như yêu cầu một khách hàng CVS, vì vậy đó là vấn đề về gà và trứng.
David Moles

1
Cảm ơn @DavidMoles. Tôi đã thay đổi câu trả lời để đảm bảo rằng mọi người đều biết về giới hạn này. Tôi đã không thử nó trước đây.
OliverS

0

CVSNT chạy trên Mac OS X 10.9 và hỗ trợ mã hóa tài nguyên HQX, v.v. Beta cho 10.9 có sẵn tại đây: http://march-hare.com/cvspro/#downcvsnt

Nếu trước đây bạn đã sử dụng Mac CVS ​​X thì đây (CVSNT) là 'dòng lệnh' đã được bao gồm trước đó.


1
Chào mừng đến với trang web. Xin hãy xem apple.stackexchange.com/help/behavior , đặc biệt là phần về tự quảng cáo.
nohillside

Tôi khá chắc chắn rằng nhận xét của tôi có liên quan đến câu hỏi được hỏi và mối liên hệ của tôi với sản phẩm đã được biết rõ và được xác định rõ ràng (ví dụ: hình đại diện của tôi là logo của công ty) và tôi là thành viên của dự án Hệ thống Phiên bản đồng thời .
Arthur Barrett

0

Tôi cũng gặp vấn đề tương tự, và một vấn đề lớn với Macports, Fink, v.v. là họ có rất nhiều vấn đề khó hiểu và không cần thiết nếu tất cả những gì bạn cần là một công cụ duy nhất như cvs. Trong trường hợp của tôi, cố gắng cài đặt nó bằng macports dẫn đến một cửa sổ bật lên yêu cầu tôi cài đặt trình biên dịch java (?!) Và hàng tá các gói khác phải được xây dựng để tôi nhanh chóng rút ra :)

Nếu tất cả những gì bạn cần là cvs, chỉ cần tự mình xây dựng nó là dễ dàng và sạch sẽ hơn và kết quả nhị phân tích hợp với tất cả các lib hiện có, v.v. trên máy tính. Bạn cần cài đặt Xcode và các công cụ dòng lệnh của nó, nhưng nếu bạn cần cvs, tôi chắc chắn bạn đã cài đặt nó.

Lấy mã nguồn cvs từ:

http://doad.savannah.gnu.org/release/cvs/source/ sóng / 11.11 / 23 /

hủy bỏ nó vào một thư mục, nhập thư mục và chạy ./cool

Sau đó, bạn (không may) cần chỉnh sửa các tệp trong src / và lib / để đổi tên hàm getline của chúng thành getlineX, vì getline đụng độ với hàm libc. Tôi có thể làm một bản vá này và đặt ở đâu đó tôi đoán ..

Sau này, hãy "thực hiện" và bạn sẽ nhận được một tệp nhị phân trong src / cvs mà bạn có thể đặt trong thư mục ~ / bin của mình hoặc bất cứ nơi nào, và đảm bảo rằng điểm PATH của bạn ở đó.


> Tôi có thể làm một bản vá này và đặt ở đâu đó tôi đoán. Điều đó sẽ tốt đẹp, và đáng để gửi lại. (Không khẩn cấp đối với tôi, tôi thường gặp may mắn với Homebrew.)
Flash Sheridan

0

Theo dõi câu trả lời của BjornW với một bản vá.

Sau khi tải xuống và hủy lưu trữ nguồn từ: http://doad.savannah.gnu.org/release/cvs/source/ sóng / 11.11 / 23 /

Sao chép bản vá bên dưới vào một số tệp, giả sử cvs-1.11.23.patch, sau đó áp dụng bản vá với:

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

Sau đó xây dựng theo READMEhướng dẫn tập tin cvs-1.11,23 :

cd cvs-1.11.23
./configure
make
make install

Đây là bản vá:

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));
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.