OS X Mavericks'te CVS


17

Görünüşe göre Apple, OS X 10.9 Mavericks cihazlarının altındaki CVS'yi kaldırdı (ve evet, gerçekten gitti). Deneyimsiz kullanıcılar için CVS, farklı makineler ve kullanıcılar (geliştiriciler) arasında dosyaları güncel tutmak için bir araç olan Eşzamanlı Sürüm Sistemidir .

Hala gerektiren bazı eski projelerim var (hayır, SVN kullanmak için değiştiremiyorum, çok daha az git).

OS X Mavericks altında çalışan bir sürümü almak için en iyi yer neresi?


Hala içeride olup olmadığını kontrol ettiniz /usr/bin/cvsmi?
nohillside

Evet, gerçekten gitti.
Andrew Jaffe

Yanıtlar:


16

Çoğu program için en kolay yol Macports, Homebrew veya Fink gibi bir paket yöneticisi ile kurulum yapmaktır. Taşıyıcılar , kodu OSX'e taşıma ile ilgili sorunları çözmüş olacaklar, böylece aşağıdaki gibi basit olmalıdır ( Macports için )

  1. Macport'u yükleyin, .pkg dosyasını indirin ve çalıştırın
  2. Xcode'u ve komut satırı araçlarını yükleyin
  3. Yolunuza ekleyin /opt/local/bin- yükleyici bunu sizin için yapmaya çalışır, böylece muhtemelen kontrol etmeniz gerekir
  4. Bağlantı noktasını takın sudo port install cvs
  5. CVS'yi tam yolla çalıştırın /opt/local/bin/cvsveya PATH'inizi kullanın

16

Unix-ish paket yöneticisi açık bir şekilde gidilecek yoldur. I taşınmış Fink ve MacPorts için homebrew CVS için bir tarifi vardır:

brew install cvs

Tarihsel bütünlük için, eskiden (biraz zor) kullanmak zorunda cvs tarifini : brew install homebrew/dupes/cvs.

Çok az testten sonra işe yarıyor gibi görünüyor.


3
Biraz daha kısa komutu denedim brew install cvs(OS 10.9, Homebrew 0.9.5); çalışıyor gibi görünen CVS 1.12.13 yükledi.
nknight

3
Evet, nknight'ın komutu doğru olandır. Komut değişti, çünkü CVS formülü Kasım 2013'te homebrew-
dupes'ten

2

edit: yorumlarda belirtildiği gibi git bu yaklaşım sadece güzel bir birlikte çalışma katmanı yapar ama eksik bir csv istemcisi sorununa bir çözüm kılan çalışan bir cvs istemcisi gerektirir.

Başka bir seçenek git'i bir cvs istemcisi olarak kullanmak ve doğrudan CVS sunucusuna göndermek olacaktır.

İhtiyaçlarınıza bağlı olarak bu yeterli cvs interop + yerel olarak git kullanmanın bir avantajı olabilir.


Bunu yapabileceğine dair hiçbir fikrim yoktu. Çok havalı!
Andrew Jaffe

2
Bunu denedim, ancak git-cvsimportbir CVS istemcisi gerektiriyor gibi görünüyor, bu yüzden bir tavuk ve yumurta problemi.
David Moles

1
Teşekkürler @DavidMoles. Herkesin bu sınırlamanın farkında olduğundan emin olmak için cevabı değiştirdim. Daha önce kendim denemedim.
OliverS

0

CVSNT, Mac OS X 10.9 üzerinde çalışır ve kaynakların HQX kodlamasını vb. Destekler. 10.9 için beta sürümüne buradan erişebilirsiniz: http://march-hare.com/cvspro/#downcvsnt

Daha önce Mac CVS ​​X kullandıysanız, bu (CVSNT) daha önce dahil edilmiş olan 'komut satırı'dır.


1
Siteye hoş geldiniz. Lütfen apple.stackexchange.com/help/behavior adresine , özellikle de kendini tanıtmayla ilgili kısma bir göz atın .
nohillside

Yorumumun sorulan soru ile alakalı olduğundan eminim ve ürünle olan ilişkim iyi biliniyor ve açıkça tanımlanıyor (örn: avatarım şirket logosu) ve Eşzamanlı Sürümler Sistemi projesinin üyesiyim .
Arthur Barrett

0

Sadece aynı sorunu yaşadım ve Macports, Fink vb. İle ilgili büyük bir sorun, ihtiyaç duyduğunuz tek şey cvs gibi tek bir araçsa kafa karıştırıcı ve gereksiz olan diğer bağımlılıkların çoğunu çekmeleri. Benim durumumda, macport kullanarak yüklemeye çalışmak, bir java derleyici (?!) Yüklememi isteyen bir pop-up ile sonuçlandı ve hızlı bir şekilde çıkardığım için düzinelerce başka paket inşa edilmesi gerekiyordu :)

İhtiyacınız olan tek şey cvs ise, sadece kendiniz oluşturmak daha kolay ve daha temizdir ve ortaya çıkan ikili, bilgisayardaki mevcut tüm kütüphanelerle vb. Yüklü Xcode ve onun komut satırı araçlarına ihtiyacınız var, ama cvs gerekiyorsa, bu zaten yüklü olduğundan eminim.

CVS kaynak kodunu şuradan alın:

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

bir klasöre ayırın, klasörü girin ve ./configure komutunu çalıştırın.

Daha sonra (maalesef) getline işlevlerini, örneğin getlineX olarak yeniden adlandırmak için src / ve lib / içindeki dosyaları düzenlemeniz gerekir, çünkü getline bir libc işleviyle çakışır. Bunun bir yamasını yapabilir ve sanırım bir yere koyabilirim.

Bundan sonra, "make" yapın ve src / cvs içinde ~ / bin klasörünüze veya herhangi bir yere koyabileceğiniz bir binary alırsınız ve PATH'inizin oraya işaret ettiğinden emin olursunuz.


> Bunun bir yamasını yapabilir ve sanırım bir yere koyabilirim. Bu güzel ve geri göndermeye değer. (Benim için acil değil, genellikle Homebrew ile iyi şanslar var.)
Flash Sheridan

0

BjornW'un cevabını yama ile takip etmek .

Http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/ adresinden kaynağı indirip arşivden çıktıktan sonra.

Aşağıdaki düzeltme ekini bir dosyaya kopyalayın, diyelim, düzeltme ekini aşağıdakilerle cvs-1.11.23.patchuygulayın:

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

Sonra cvs-1.11.23 READMEdosya talimatlarına göre oluşturun:

cd cvs-1.11.23
./configure
make
make install

İşte yama:

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));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.