OS X 매버릭스의 CVS


17

분명히 애플은 OS X 10.9 Mavericks devtools에서 CVS제거 했습니다 (그렇습니다. 실제로 사라졌습니다). 시작되지 않은 경우 CVS는 서로 다른 시스템과 사용자 (개발자)간에 파일을 최신 상태로 유지하는 도구 인 Concurrent Version System 입니다.

여전히 필요로하는 레거시 프로젝트가 있습니다 (아니요, SVN을 사용하도록 변경할 수는 없지만 git은 훨씬 적습니다).

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

유닉스 패키지 관리자는 분명히 갈 길입니다. 나는에서 이동 한 핑크MacPorts를사제 CVS위한 조리법을 가지고 :

brew install cvs

역사적 완성도를 들어, 이전 (약간 하드 찾을 수)를 사용했다 CVS에 대한 조리법을 : brew install homebrew/dupes/cvs.

아주 최소한의 테스트 후에는 작동하는 것 같습니다.


3
약간 더 짧은 명령 brew install cvs(OS 10.9, Homebrew 0.9.5)을 시도했습니다 . CVS 1.12.13을 설치했는데 작동하는 것 같습니다.
nknight

3
예, nknight의 명령이 맞습니다. 는 CVS 공식이 있기 때문에 명령이 변경되었습니다 이동 2013 년 11 월에 브루 코어에 사제-속는에서
herzbube

2

편집 : 주석에서 언급했듯이 git에는 작동하는 cvs 클라이언트가 필요합니다.

또 다른 옵션은 git을 cvs 클라이언트로 사용 하고 CVS 서버로 직접 푸시하는 것입니다.

필요에 따라 이것은 충분한 cvs interop + git을 로컬로 사용하는 이점이 될 수 있습니다.


당신이 할 수있을 줄 몰랐어요 아주 멋지다!
Andrew Jaffe

2
나는 이것을 시도했지만 git-cvsimportCVS 클라이언트를 필요로하는 것처럼 보이기 때문에 닭고기와 계란 문제입니다.
David Moles

1
감사합니다 @DavidMoles. 모든 사람이이 제한을 인식 할 수 있도록 답변을 변경했습니다. 나는 전에 그것을 직접 시도하지 않았다.
OliverS

0

CVSNT는 Mac OS X 10.9에서 실행되며 리소스 등의 HQX 인코딩을 지원합니다. 10.9 베타 버전은 여기 ( http://march-hare.com/cvspro/#downcvsnt )에서 제공됩니다.

이전에 Mac CVS ​​X를 사용한 경우이 (CVSNT)는 이전에 포함 된 '명령 줄'입니다.


1
사이트에 오신 것을 환영합니다. apple.stackexchange.com/help/behavior , 특히 자체 프로모션에 대한 부분을 살펴보십시오 .
nohillside

본인의 의견이 해당 질문과 관련이 있다고 확신하며 제품과의 제휴 관계가 잘 알려져 있고 명확하게 식별됩니다 (예 : 아바타는 회사 로고 임) . Concurrent Versions System 프로젝트 의 멤버입니다 .
Arthur Barrett

0

방금이 같은 문제가 있었고 Macports, Fink 등의 큰 문제는 cvs와 같은 단일 도구 만 있으면 혼란스럽고 불필요 한 많은 다른 depedencies를 가져 오는 것입니다. 필자의 경우 macports를 사용하여 설치하려고하면 Java 컴파일러 (?!)를 설치하라는 팝업이 표시되고 수십 개의 다른 패킷을 빌드해야하므로 꺼내기 :)

당신이 필요로하는 모든 것이 이력서라면, 그것을 직접 구축하는 것이 쉽고 깨끗하며 결과적인 바이너리는 컴퓨터의 모든 기존 라이브러리 등과 통합됩니다. Xcode와 명령 줄 도구가 필요하지만 cvs가 필요한 경우 이미 설치되어 있다고 확신합니다.

다음에서 cvs 소스 코드를 가져옵니다.

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

폴더에 압축을 풀고 폴더를 입력 한 후 ./configure를 실행하십시오.

그러면 불행히도 getline이 libc 함수와 충돌하기 때문에 getline 함수의 이름을 getlineX로 바꾸려면 src / 및 lib /의 파일을 편집해야합니다. 나는 이것의 패치를 할 수 있고 내가 추측 어딘가에 넣을 수 있습니다 ..

그런 다음 "make"를 수행하면 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

그런 다음 cvs-1.11.23 README파일 지침에 따라 빌드 하십시오.

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.