CVS unter OS X Mavericks


17

Anscheinend hat Apple CVS unter den Devtools von OS X 10.9 Mavericks entfernt (und ja, es ist wirklich weg). Für die Uneingeweihten, CVS ist das Concurrent Version System , ein Werkzeug für die Dateien auf dem neuesten Stand zwischen verschiedenen Rechnern und Benutzern (Entwickler) zu halten.

Ich habe einige ältere Projekte, die es noch benötigen (nein, ich kann es nicht ändern, um SVN zu verwenden, geschweige denn git).

Wo ist der beste Ort, um eine Version zu bekommen, die unter OS X Mavericks funktioniert?


Hast du nachgesehen, ob es noch drin ist /usr/bin/cvs?
Nohillside

Ja, es ist wirklich weg.
Andrew Jaffe

Antworten:


16

Der einfachste Weg für die meisten Programme ist die Installation mit einem Paketmanager wie Macports, Homebrew oder Fink. Die Portierer haben die Probleme beim Portieren des Codes auf OSX gelöst, sodass es so einfach wie folgt sein sollte (für Macports ).

  1. Installieren Sie macports, laden Sie die .pkg-Datei herunter und führen Sie sie aus
  2. Installieren Sie Xcode und seine Befehlszeilentools
  3. Fügen Sie dies /opt/local/binzu Ihrem Pfad hinzu - das Installationsprogramm versucht, dies für Sie zu tun, sodass Sie dies wahrscheinlich nur überprüfen müssen
  4. Installieren Sie den Port sudo port install cvs
  5. Führen Sie cvs entweder mit dem vollständigen Pfad aus /opt/local/bin/cvsoder verwenden Sie Ihren PATH

16

Ein unix-ischer Paketmanager ist eindeutig der richtige Weg. Ich bin von Fink und Macports zu Homebrew gewechselt , das ein Rezept für CVs enthält:

brew install cvs

Für historische Vollständigkeit, Sie früher das (etwas schwer zu finden) zu verwenden , hat Rezept für cvs : brew install homebrew/dupes/cvs.

Nach nur sehr wenigen Tests scheint es zu funktionieren.


3
Ich habe den etwas kürzeren Befehl ausprobiert brew install cvs(OS 10.9, Homebrew 0.9.5); es installierte CVS 1.12.13, was zu funktionieren scheint.
nknight

3
Ja, der Befehl von nknight ist der richtige. Der Befehl hat sich geändert , da die CVS Formel bewegt hat von Homebrew-Betrogenen zu Homebrew Kern im November 2013
herzbube

2

edit: Wie in den Kommentaren erwähnt, benötigt git einen funktionierenden cvs-Client, der diesen Ansatz nur zu einer netten Interop-Ebene macht, aber keine Lösung für das Problem eines fehlenden csv-Clients darstellt.

Eine andere Möglichkeit wäre, git als CVS-Client zu verwenden und direkt auf den CVS-Server zu pushen.

Abhängig von Ihren Bedürfnissen kann dies ausreichend sein, um git lokal zu nutzen.


Ich hatte keine Ahnung, dass Sie das tun könnten. Sehr cool!
Andrew Jaffe

2
Ich habe es versucht, aber git-cvsimportanscheinend ist ein CVS-Client erforderlich, sodass es ein Henne-Ei-Problem ist.
David Moles

1
Vielen Dank an DavidMoles. Ich habe die Antwort geändert, um sicherzustellen, dass diese Einschränkung allen bekannt ist. Ich habe es vorher nicht selbst ausprobiert.
OliverS

0

CVSNT läuft unter Mac OS X 10.9 und unterstützt die HQX-Codierung von Ressourcen usw. Beta für 10.9 ist hier verfügbar: http://march-hare.com/cvspro/#downcvsnt

Wenn Sie zuvor Mac CVS ​​X verwendet haben, ist dies (CVSNT) die 'Befehlszeile', die zuvor enthalten war.


1
Willkommen auf der Seite. Bitte werfen Sie einen Blick auf apple.stackexchange.com/help/behavior , insbesondere auf den Teil über Eigenwerbung.
Nohillside

Ich bin mir ziemlich sicher, dass mein Kommentar für die gestellte Frage relevant war, und meine Zugehörigkeit zum Produkt ist bekannt und klar erkennbar (z. B .: mein Avatar ist das Firmenlogo), und ich bin Mitglied des Concurrent Versions System-Projekts .
Arthur Barrett

0

Ich hatte gerade das gleiche Problem, und ein großes Problem mit Macports, Fink usw. ist, dass sie viele andere Abhängigkeiten einbeziehen, was verwirrend und unnötig ist, wenn man nur ein einziges Tool wie cvs benötigt. In meinem Fall führte der Versuch, es mit Macports zu installieren, zu einem Popup, in dem ich aufgefordert wurde, einen Java-Compiler (?!) Zu installieren, und Dutzende anderer Pakete mussten erstellt werden, damit ich schnell Eject zog :)

Wenn Sie nur cvs benötigen, ist es einfach und übersichtlicher, es selbst zu erstellen, und die resultierende Binärdatei lässt sich in alle vorhandenen Bibliotheken usw. auf dem Computer integrieren. Sie müssen Xcode und seine Befehlszeilentools installiert haben, aber wenn Sie CVS benötigen, sind Sie sicher, dass Sie dies bereits installiert haben.

Den CVS-Quellcode erhalten Sie von:

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

entpacke es in einen Ordner, gib den Ordner ein und starte ./configure

Sie müssen dann (leider) die Dateien in src / und lib / bearbeiten, um ihre getline-Funktion beispielsweise in getlineX umzubenennen, da getline mit einer libc-Funktion kollidiert. Ich könnte einen Patch davon machen und irgendwo platzieren, denke ich.

Danach mache "make" und du bekommst eine Binärdatei in src / cvs, die du in deinen ~ / bin-Ordner oder wo auch immer legen kannst, und stelle sicher, dass deine PATH-Punkte dort sind.


> Ich könnte einen Patch davon machen und irgendwo platzieren, denke ich. Das wäre nett und es wert, zurückgeschickt zu werden. (Nicht dringend für mich, ich habe im Allgemeinen viel Glück mit Homebrew.)
Flash Sheridan

0

Im Anschluss an BjornW Antwort mit einem Patch.

Nach dem Herunterladen und dem Entarchivieren der Quelle von: http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/

Kopieren Sie den unten stehenden Patch in eine Datei cvs-1.11.23.patch, und wenden Sie den Patch mit folgendem Befehl an:

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

Dann bauen Sie nach den Anweisungen der READMEDatei cvs-1.11.23 :

cd cvs-1.11.23
./configure
make
make install

Hier ist der Patch:

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));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.