CVS sur OS X Mavericks

17

Apparemment, Apple a supprimé CVS sous les devtools OS X 10.9 Mavericks (et oui, c'est vraiment parti). Pour les non-initiés, CVS est le Concurrent Version System , un outil pour maintenir les fichiers à jour entre différentes machines et utilisateurs (développeurs).

J'ai quelques projets hérités qui en ont encore besoin (non, je ne peux pas le changer pour utiliser SVN, encore moins git).

Où est le meilleur endroit pour obtenir une version qui fonctionne sous OS X Mavericks?

Andrew Jaffe
la source
Avez-vous vérifié s'il est toujours en place /usr/bin/cvs?
nohillside
Oui, c'est vraiment parti.
Andrew Jaffe

Réponses:

16

Le moyen le plus simple pour la plupart des programmes est d'installer avec un gestionnaire de paquets comme Macports, Homebrew ou Fink. Les porteurs auront résolu les problèmes de portage du code vers OSX, donc cela devrait être aussi simple que ci-dessous (pour Macports )

  1. Installez macports, téléchargez le fichier .pkg et exécutez-le
  2. Installer Xcode et ses outils de ligne de commande
  3. Ajoutez /opt/local/binà votre chemin - le programme d'installation tente de le faire pour vous, vous avez donc probablement juste besoin de vérifier
  4. Installez le port sudo port install cvs
  5. Exécutez cvs avec le chemin complet /opt/local/bin/cvsou utilisez votre PATH
user151019
la source
16

Un gestionnaire de paquets unix-ish est clairement la voie à suivre. Je suis passé de fink et Macports à homebrew , qui a une recette pour les cvs:

brew install cvs

Pour être complet , historique, vous avez eu auparavant d'utiliser le ( un peu difficile à trouver) recette pour cvs : brew install homebrew/dupes/cvs.

Après seulement des tests très minimes, cela semble fonctionner.

Andrew Jaffe
la source
3
J'ai essayé la commande légèrement plus courte brew install cvs(OS 10.9, Homebrew 0.9.5); il a installé CVS 1.12.13, qui semble fonctionner.
nknight
3
Oui, la commande de nknight est la bonne. La commande a changé car la formule CVS est passée de homebrew-dupes à Homebrew core en novembre 2013.
herzbube
2

edit: Comme remarqué dans les commentaires, git nécessite un client cvs fonctionnel qui fait de cette approche une belle couche d'interopérabilité mais pas une solution au problème d'un client csv manquant.

Une autre option serait d'utiliser git comme client cvs et de pousser directement vers le serveur CVS.

En fonction de vos besoins, cela pourrait être suffisant en interopérabilité cvs + un avantage d'utiliser git localement.

OliverS
la source
Je ne savais pas que tu pouvais faire ça. Très cool!
Andrew Jaffe
2
J'ai essayé cela, mais git-cvsimportsemble nécessiter un client CVS, donc c'est un problème de poulet et d'oeuf.
David Moles
1
Merci @DavidMoles. J'ai changé la réponse pour m'assurer que tout le monde est au courant de cette limitation. Je ne l'ai pas essayé moi-même auparavant.
OliverS
0

CVSNT fonctionne sur Mac OS X 10.9 et prend en charge le codage HQX des ressources, etc. La version bêta de 10.9 est disponible ici: http://march-hare.com/cvspro/#downcvsnt

Si vous avez déjà utilisé Mac CVS ​​X, alors (CVSNT) est la «ligne de commande» qui était précédemment incluse.

Arthur Barrett
la source
1
Bienvenue sur le site. Veuillez consulter apple.stackexchange.com/help/behavior , en particulier la partie sur l'autopromotion.
nohillside
Je suis presque sûr que mon commentaire était pertinent pour la question posée, et mon affiliation avec le produit est bien connue et clairement identifiée (par exemple: mon avatar est le logo de l'entreprise), et je suis membre du projet Système de versions simultanées .
Arthur Barrett
0

Je viens d'avoir ce même problème, et un gros problème avec Macports, Fink, etc., c'est qu'ils entraînent de nombreuses autres dépendances, ce qui est déroutant et inutile si tout ce dont vous avez besoin est un seul outil comme cvs. Dans mon cas, essayer de l'installer en utilisant macports a entraîné une fenêtre contextuelle me demandant d'installer un compilateur java (?!) Et des dizaines d'autres paquets ont dû être construits, j'ai donc rapidement tiré éjecter :)

Si tout ce dont vous avez besoin est de cvs, le construire vous-même est facile et plus propre et le binaire résultant s'intègre avec toutes les bibliothèques existantes, etc. sur l'ordinateur. Vous avez besoin de Xcode installé et de ses outils de ligne de commande, mais si vous avez besoin de cvs, je suis sûr que vous l'avez déjà installé.

Obtenez le code source cvs à partir de:

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

décompactez-le dans un dossier, entrez dans le dossier et exécutez ./configure

Vous devez ensuite (malheureusement) modifier les fichiers dans src / et lib / pour renommer leur fonction getline en, disons, getlineX, car getline se heurte à une fonction libc. Je pourrais faire un patch de cela et mettre quelque part je suppose ..

Après cela, faites "make" et vous obtiendrez un binaire dans src / cvs que vous pouvez mettre dans votre dossier ~ / bin ou n'importe où, et assurez-vous que votre PATH pointe là.

BjornW
la source
> Je pourrais en faire un patch et le mettre quelque part je suppose. Ce serait bien et cela valait la peine d'être soumis. (Pas urgent pour moi, j'ai généralement de la chance avec Homebrew.)
Flash Sheridan
0

Faisant suite à la réponse de BjornW avec un patch.

Après avoir téléchargé et désarchivé la source depuis: http://download.savannah.gnu.org/releases/cvs/source/stable/1.11.23/

Copiez le patch ci-dessous dans un fichier, par exemple cvs-1.11.23.patch, puis appliquez le patch avec:

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

Ensuite, construisez selon les READMEinstructions du fichier cvs-1.11.23 :

cd cvs-1.11.23
./configure
make
make install

Voici le 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));
user2067021
la source