顯然,蘋果已經在OS X 10.9 Mavericks devtools下刪除了CVS(是的,它真的消失了)。對於剛開始使用的人來說, CVS是並發版本系統,這是一種用於使不同機器和用戶(開發人員)之間的文件保持最新狀態的工具。它(不,我無法將其更改為使用SVN,更不用說git了。)
在哪裡可以獲得在OS X Mavericks下工作的版本的最佳位置?
顯然,蘋果已經在OS X 10.9 Mavericks devtools下刪除了CVS(是的,它真的消失了)。對於剛開始使用的人來說, CVS是並發版本系統,這是一種用於使不同機器和用戶(開發人員)之間的文件保持最新狀態的工具。它(不,我無法將其更改為使用SVN,更不用說git了。)
在哪裡可以獲得在OS X Mavericks下工作的版本的最佳位置?
使用unix-ish軟件包管理器顯然是可行的方法。我已經從 fink和 Macports移到了 homebrew,其中有一個用於cvs的配方:
brew install cvs
為實現歷史完整性,您以前不得不使用(略難找到) cvs的食譜: brew install homebrew / dupes / cvs
。
僅需進行極少的測試,便可以正常工作。
大多數程序最簡單的方法是使用Macports,Homebrew或Fink之類的軟件包管理器進行安裝。搬運工將解決有關將代碼移植到OSX的問題,因此應簡單如下(對於 Macports)
/ opt / local / bin
添加到您的路徑中-安裝程序會嘗試為此您可能只需要檢查 sudo port install cvs
/ opt / local運行cvs / bin / cvs
或使用您的PATH edit:如評論中所述,git需要一個工作的cvs客戶端,這使此方法只是一個很好的互操作層,但不能解決缺少csv客戶端的問題。
另一種選擇是使用 git作為cvs客戶端並直接推送到CVS服務器。
根據您的需求,這可能是足夠的cvs互操作+在本地使用git的優勢。
CVSNT在Mac OS X 10.9上運行,並支持資源等的HQX編碼。10.9的Beta版在此處可用: http://march-hare.com/cvspro/#downcvsnt
如果您以前使用過Mac CVS X,則此(CVSNT)是以前包含的“命令行”。
我也遇到了同樣的問題,Macports,Fink等的一個大問題是它們引入了許多其他缺陷,如果您只需要一個像cvs這樣的工具,那麼它們就會造成混亂並且不必要。在我的情況下,嘗試使用macports安裝它會導致彈出窗口,要求我安裝Java編譯器(?!),還必須構建許多其他數據包,因此我迅速撤出了:)
您需要的是cvs,只需自己構建即可輕鬆,更乾淨,並且生成的二進製文件與計算機上所有現有的lib等集成在一起。您確實需要安裝Xcode及其命令行工具,但是如果您需要cvs,我確定您已經安裝了它。
從以下位置獲取cvs源代碼:
http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/
將其解壓縮到一個文件夾中,輸入該文件夾並運行./configure
然後(不幸的是)您需要(在src /和lib /中)編輯文件,以將其getline函數重命名為例如getlineX,因為getline與libc函數衝突。我可以對此做一個補丁,然後放到我猜的某個地方。
在此之後,執行“ make”,您將在src / cvs中獲得一個二進製文件,您可以將其放入〜/ bin文件夾或任何地方,並確保您的PATH指向那裡。
緊跟 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
。/配置
使
進行安裝
這是補丁:
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 @@
返回ret
}
-int
-getline(lineptr,n,流)
-char ** lineptr;
-size_t * n;
-FILE *流;
+ ssize_t
+ getline(char **限制lineptr,size_t *限制linecapp,FILE *限制流)
{
-返回getstr(lineptr,n,流,'\ n',0,GETLINE_NO_LIMIT);
+ return(ssize_t)getstr(lineptr,linecapp,流,'\ n',0,GETLINE_NO_LIMIT);
}
整型
差異-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 @@
#定義GETLINE_NO_LIMIT -1
-int
-getline __PROTO((char ** _ lineptr,size_t * _n,FILE * _stream));
+ ssize_t
+ getline(char **限制linep,size_t *限制linecapp,FILE *限制流);
整型
getline_safe __PROTO((char ** _ lineptr,size_t * _n,FILE * _stream,
int limit));