CVS pada OS X Mavericks


17

Rupanya, Apple telah menghapus CVS di OS X 10.9 Mavericks devtools (dan ya, itu benar-benar hilang). Untuk yang belum tahu, CVS adalah Concurrent Version System , sebuah alat untuk menjaga agar file selalu terbarui antara berbagai mesin dan pengguna (pengembang).

Saya punya beberapa proyek lama yang masih membutuhkannya (tidak, saya tidak bisa mengubahnya untuk menggunakan SVN, apalagi git).

Di mana tempat terbaik untuk mendapatkan versi yang berfungsi di bawah OS X Mavericks?


Apakah Anda memeriksa apakah masih ada /usr/bin/cvs?
nohillside

Ya, itu benar-benar hilang.
Andrew Jaffe

Jawaban:


16

Cara termudah untuk sebagian besar program adalah menginstal dengan manajer paket seperti Macports, Homebrew atau Fink. Para porter akan menyelesaikan masalah tentang porting kode ke OSX sehingga harus sesederhana berikut ini (untuk Macports )

  1. Instal macports, unduh file .pkg dan jalankan
  2. Instal Xcode dan alat-alat baris perintahnya
  3. Tambahkan /opt/local/binke jalur Anda - penginstal mencoba melakukan ini untuk Anda sehingga Anda mungkin hanya perlu memeriksa
  4. Pasang porta sudo port install cvs
  5. Jalankan cvs dengan path lengkap /opt/local/bin/cvsatau gunakan PATH Anda

16

Seorang manajer paket unix-ish jelas cara untuk pergi. Saya telah pindah dari fink dan Macports ke homebrew , yang memiliki resep untuk cvs:

brew install cvs

Untuk kelengkapan sejarah, Anda sebelumnya harus menggunakan (sedikit sulit untuk menemukan) resep untuk cvs : brew install homebrew/dupes/cvs.

Setelah pengujian yang sangat minim, tampaknya berhasil.


3
Saya mencoba perintah yang sedikit lebih pendek brew install cvs(OS 10.9, Homebrew 0.9.5); itu menginstal CVS 1.12.13, yang tampaknya berfungsi.
nknight

3
Ya, perintah nknight adalah yang benar. Perintah telah berubah karena rumus CVS telah pindah dari homebrew-dupes ke inti Homebrew pada November 2013.
herzbube

2

sunting: Seperti yang dikomentari dalam komentar git membutuhkan klien cvs yang berfungsi yang membuat pendekatan ini hanya lapisan interop yang bagus tetapi bukan solusi untuk masalah klien csv yang hilang.

Pilihan lain adalah menggunakan git sebagai klien cvs dan langsung mendorong ke server CVS.

Tergantung pada kebutuhan Anda, ini bisa menjadi cvs interop + keuntungan yang cukup menggunakan git secara lokal.


Saya tidak tahu Anda bisa melakukan itu. Sangat keren!
Andrew Jaffe

2
Saya mencoba ini, tetapi git-cvsimporttampaknya memerlukan klien CVS, jadi ini masalah ayam dan telur.
David Moles

1
Terima kasih @ Davidvid. Saya telah mengubah jawaban untuk memastikan bahwa semua orang menyadari keterbatasan ini. Saya tidak mencobanya sendiri sebelumnya.
OliverS

0

CVSNT berjalan pada Mac OS X 10.9, dan mendukung pengkodean sumber daya HQX dll. Beta untuk 10.9 tersedia di sini: http://march-hare.com/cvspro/#downcvsnt

Jika sebelumnya Anda menggunakan Mac CVS ​​X maka ini (CVSNT) adalah 'baris perintah' yang sebelumnya disertakan.


1
Selamat datang di situs ini. Silakan lihat apple.stackexchange.com/help/behavior , terutama bagian tentang promosi diri.
nohillside

Saya cukup yakin komentar saya relevan dengan pertanyaan yang diajukan, dan afiliasi saya dengan produk tersebut sangat dikenal dan diidentifikasi dengan jelas (misalnya: avatar saya adalah logo perusahaan), dan saya anggota proyek Sistem Versi Bersamaan .
Arthur Barrett

0

Saya hanya punya masalah yang sama, dan masalah besar dengan Macports, Fink dll. Adalah mereka menarik banyak depedensi lain yang membingungkan dan tidak perlu jika yang Anda butuhkan hanyalah alat tunggal seperti cvs. Dalam kasus saya, mencoba menginstalnya menggunakan macports menghasilkan popup yang meminta saya untuk menginstal kompiler java (?!) Dan puluhan paket lain harus dibangun sehingga saya cepat mengeluarkan eject :)

Jika yang Anda butuhkan adalah cvs, cukup buat sendiri saja lebih mudah dan lebih bersih dan biner yang dihasilkan terintegrasi dengan semua lib yang ada, dll di komputer. Anda memang perlu menginstal Xcode dan alat-alat baris perintahnya, tetapi jika Anda membutuhkan cvs, saya yakin Anda sudah menginstalnya.

Dapatkan kode sumber cvs dari:

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

batalkan tar ke folder, masukkan folder, dan jalankan ./configure

Anda kemudian (sayangnya) perlu mengedit file dalam src / dan lib / untuk mengubah nama fungsi getline mereka menjadi, katakanlah, getlineX, karena getline bentrok dengan fungsi libc. Saya bisa melakukan patch ini dan menempatkan di suatu tempat saya kira ..

Setelah ini, lakukan "make" dan Anda akan mendapatkan biner di src / cvs yang dapat Anda tempatkan di folder ~ / bin Anda atau di mana saja, dan pastikan PATH Anda menunjuk ke sana.


> Saya bisa melakukan patch ini dan menempatkan di suatu tempat saya kira. Itu akan menyenangkan, dan layak dikirim kembali. (Tidak mendesak bagi saya, saya biasanya beruntung dengan Homebrew.)
Flash Sheridan

0

Menindaklanjuti jawaban BjornW dengan tambalan.

Setelah mengunduh dan menghapus pengarsipan sumber dari: http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/

Salin tambalan di bawah ini ke beberapa file, katakan cvs-1.11.23.patch,, lalu terapkan tambalan dengan:

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

Kemudian buat sesuai dengan READMEinstruksi file cvs-1.11.23 :

cd cvs-1.11.23
./configure
make
make install

Inilah tambalannya:

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));
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.