OS X Mavericks पर CVS


17

जाहिरा तौर पर, Apple ने OS X 10.9 Mavericks devtools (और हाँ, यह वास्तव में चला गया है) के तहत CVS को हटा दिया है । Uninitiated के लिए, CVS समवर्ती संस्करण प्रणाली है , जो विभिन्न मशीनों और उपयोगकर्ताओं (डेवलपर्स) के बीच अद्यतित रखने के लिए एक उपकरण है।

मेरे पास कुछ विरासत परियोजनाएं हैं जिनकी अभी भी आवश्यकता है (नहीं, मैं इसे एसवीएन का उपयोग करने के लिए नहीं बदल सकता, बहुत कम गिट)।

ओएस एक्स मावेरिक्स के तहत काम करने वाले संस्करण को प्राप्त करने के लिए सबसे अच्छी जगह कहां है?


क्या आपने जांच की कि क्या यह अभी भी है /usr/bin/cvs?
nohillside

हाँ, यह वास्तव में चला गया है।
एंड्रयू जाफ

जवाबों:


16

अधिकांश कार्यक्रमों के लिए सबसे आसान तरीका एक पैकेज प्रबंधक जैसे मैकपोर्ट, होमब्रे या फिंक के साथ स्थापित करना है। पोर्टर्स ने कोड को OSX में पोर्ट करने के मुद्दों पर काम किया होगा, इसलिए यह निम्नानुसार सरल होना चाहिए ( Macports के लिए )

  1. Macports स्थापित करें, .pkg फ़ाइल डाउनलोड करें और इसे चलाएँ
  2. Xcode और उसके कमांड लाइन टूल को इंस्टॉल करें
  3. /opt/local/binअपने पथ में जोड़ें - इंस्टॉलर आपके लिए ऐसा करने का प्रयास करता है, इसलिए आपको शायद जांचने की आवश्यकता है
  4. पोर्ट स्थापित करें sudo port install cvs
  5. Cvs को या तो पूरे रास्ते पर चलाएँ /opt/local/bin/cvsया अपने PATH का उपयोग करें

16

एक यूनिक्स-ईश पैकेज प्रबंधक स्पष्ट रूप से जाने का रास्ता है। मैं fink और macports से homebrew में चला गया हूं , जिसमें cv के लिए एक नुस्खा है:

brew install cvs

ऐतिहासिक पूर्णता के लिए, आप पूर्व में (थोड़ा मुश्किल लगता है) का इस्तेमाल किया था सीवीएस के लिए नुस्खा : brew install homebrew/dupes/cvs

केवल बहुत ही न्यूनतम परीक्षण के बाद, यह काम करने लगता है।


3
मैंने थोड़ी कम कमांड की कोशिश की brew install cvs(OS 10.9, Homebrew 0.9.5); इसने CVS 1.12.13 स्थापित किया, जो काम करता दिखाई देता है।
nknight

3
हां, नैक्नाइट की आज्ञा सही है। क्योंकि सीवीएस सूत्र आदेश बदल गया है ले जाया गया है 2013 नवंबर में Homebrew कोर करने के लिए homebrew-ड्यूप्स से
herzbube

2

संपादित करें: जैसा कि टिप्पणियों में कहा गया है कि git को एक कार्यशील cvs क्लाइंट की आवश्यकता होती है, जो इस दृष्टिकोण को एक अच्छी इंटरोप लेयर बनाता है, लेकिन एक लापता csv क्लाइंट की समस्या का हल नहीं।

एक अन्य विकल्प cvs क्लाइंट के रूप में git का उपयोग करना और सीधे CVS सर्वर पर पुश करना होगा।

आपकी आवश्यकताओं के आधार पर यह पर्याप्त रूप से cv इंटरोप + स्थानीय रूप से गिट का उपयोग करने का एक फायदा हो सकता है।


मुझे नहीं पता था कि आप ऐसा कर सकते हैं। बहुत ही शांत!
एंड्रयू जफ

2
मैंने यह कोशिश की, लेकिन git-cvsimportसीवीएस क्लाइंट की आवश्यकता प्रतीत होती है, इसलिए यह चिकन और अंडे की समस्या है।
डेविड मोल्स

1
साभार @DavidMoles मैंने यह सुनिश्चित करने के लिए उत्तर बदल दिया है कि हर कोई इस सीमा से अवगत है। मैंने पहले खुद इसे आजमाया नहीं था।
ओलिवरस

0

CVSNT Mac OS X 10.9 पर चलता है, और 10.9 के लिए संसाधनों आदि के HQX एन्कोडिंग का समर्थन करता है। यहाँ बीटा उपलब्ध है: http://march-hare.com/cvspro/#downcvsnt

यदि आपने पहले Mac CVS ​​X का उपयोग किया है तो यह (CVSNT) 'कमांड लाइन' है जिसे पहले शामिल किया गया था।


1
साइट पर आपका स्वागत है। कृपया Apple.stackexchange.com/help/behavior पर एक नज़र डालें , विशेष रूप से आत्म-प्रचार के बारे में।
nohillside

मुझे पूरा यकीन है कि मेरी टिप्पणी पूछे गए सवाल के लिए प्रासंगिक थी, और उत्पाद के साथ मेरी संबद्धता अच्छी तरह से जानी जाती है और स्पष्ट रूप से पहचानी जाती है (जैसे: मेरा अवतार कंपनी का लोगो है), और मैं समवर्ती संस्करण सिस्टम परियोजना का सदस्य हूं ।
आर्थर बैरेट

0

मुझे बस यही समस्या थी, और मैकपोर्ट्स, फ़िंक आदि के साथ एक बड़ा मुद्दा यह है कि वे बहुत सारी अन्य अवसादों में खींचते हैं जो भ्रामक और अनावश्यक है अगर आपको ज़रूरत है तो एक एकल उपकरण है जैसे सीवीएस। मेरे मामले में, macports का उपयोग करके इसे स्थापित करने की कोशिश करने के परिणामस्वरूप मुझे एक पॉप कंपाइलर (और!) स्थापित करने के लिए कहा गया, जिससे दर्जनों अन्य पैकेटों का निर्माण किया जाना था, इसलिए मैंने जल्दी से बेदखल कर लिया :)

यदि आप सभी की जरूरत है cvs, बस इसे बनाने के लिए अपने आप को आसान और अधिक स्वच्छ है और परिणामस्वरूप बाइनरी कंप्यूटर पर सभी मौजूदा libs आदि के साथ एकीकृत करता है। आपको Xcode इंस्टॉल और उसके कमांड लाइन टूल की आवश्यकता है, लेकिन अगर आपको cvs की आवश्यकता है, तो मुझे यकीन है कि आपके पास यह इंस्टॉल पहले से है।

Cvs स्रोत से प्राप्त करें:

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

इसे फोल्डर में अन-टार करें, फोल्डर डालें और रन करें ।/configure

आपको (दुर्भाग्यवश) फाइलों को src / और lib / में संपादित करने की जरूरत है, अपने getline फ़ंक्शन का नाम बदलने के लिए, getlineX, क्योंकि एक libc फ़ंक्शन के साथ गेटलाइन क्लैश होता है। मैं इस का एक पैच कर सकता हूँ और मुझे लगता है कि कहीं डाल दिया है ..

इसके बाद, "बनाओ" और आपको src / cv में एक बाइनरी मिलेगा जिसे आप अपने ~ / बिन फ़ोल्डर या जहां भी रख सकते हैं, और सुनिश्चित करें कि वहां आपके PATH अंक हैं।


> मैं इसमें से एक पैच कर सकता हूं और कहीं न कहीं मैं अनुमान लगा सकता हूं। यह अच्छा होगा, और वापस जमा करने के लायक है। (मेरे लिए जरूरी नहीं, मैं आमतौर पर होमब्रे के साथ अच्छी किस्मत
फ्लैश शेरिडन

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));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.