CVS на OS X Mavericks


17

Мабуть, у Apple є видалили CVS під OS X 10.9 DevEtools Mavericks (та так, це дійсно пройшло). Для непосвячених, CVS - система одночасних версій - інструмент для оновлення файлів між різними машинами та користувачами (розробниками).

У мене є деякі успадковані проекти, які все ще потребують цього (ні, я не можу змінити його, щоб використовувати SVN, набагато менше git).

Де найкраще отримати версію, яка працює під управлінням OS X Mavericks?


Ви перевірили, чи все ще є /usr/bin/cvs?
nohillside

Так, це дійсно пішло.
Andrew Jaffe

Відповіді:


16

Найпростіший спосіб для більшості програм - встановити за допомогою менеджера пакетів, наприклад Macports, Homebrew або Fink. Носії будуть працювати над питаннями про перенесення коду на OSX, тому він повинен бути таким простим (для Macports )

  1. Встановіть macports, завантажте файл .pkg і запустіть його
  2. Встановіть Xcode та його інструменти командного рядка
  3. Додати /opt/local/bin на ваш шлях - інсталятор намагається зробити це для вас, тому вам, мабуть, потрібно просто перевірити
  4. Встановіть порт sudo port install cvs
  5. Запустіть cvs або повним шляхом /opt/local/bin/cvs або скористайтеся PATH

16

Менеджер пакетів UNIX-ISH - це явний шлях. Я переїхав з fink і Macports до домороще , який має рецепт для cvs:

brew install cvs

Для історичної повноти вам раніше доводилося користуватися  (трохи важко знайти) рецепт для cvs : brew install homebrew/dupes/cvs.

Після всього мінімального тестування, здається, працює.


3
Я спробував трохи більш коротку команду brew install cvs (OS 10.9, Homebrew 0.9.5); встановлено CVS 1.12.13, який, здається, працює.
nknight

3
Так, команда nknight є правильною. Команда змінилася, оскільки формула CVS перемістився від доморощеного до доморощеного ядра в листопаді 2013 року.
herzbube

2

редагувати: Як зазначалося в коментарях git вимагає робочого клієнта cvs, який робить цей підхід просто хорошим шаром взаємодії, але не є рішенням проблеми відсутнього клієнта csv.

Інший варіант - використовувати git як клієнт cvs і безпосередньо натиснути на сервер CVS.

Залежно від ваших потреб це може бути достатньо cvs interop + перевага використання git локально.


Я не мав уявлення, що ти можеш це зробити. Дуже круто!
Andrew Jaffe

2
Я спробував це, але git-cvsimport схоже, вимагає клієнта CVS, тому проблема курки та яйця.
David Moles

1
Завдяки @DavidMoles. Я змінив відповідь, щоб переконатися, що всі знають про це обмеження. Я сам раніше не пробував.
OliverS

0

CVSNT працює на Mac OS X 10.9 і підтримує кодування ресурсів HQX і т.д. http://march-hare.com/cvspro/#downcvsnt

Якщо ви раніше використовували Mac CVS ​​X, то це (CVSNT) - це "командний рядок", який раніше був включений.


1
Ласкаво просимо на сайт. Будь ласка, подивіться apple.stackexchange.com/help/behavior , особливо частина про саморекламу.
nohillside

Я впевнений, що мій коментар стосувався запитань, і моя приналежність до продукту добре відома й чітко визначена (наприклад: мій аватар - логотип компанії), і я - член Проект системи одночасних версій .
Arthur Barrett

0

Я просто мав цю ж проблему, і великою проблемою з Macports, Fink і т.д. є те, що вони тягнуть в багато інших depedencies, що є заплутаним і непотрібним, якщо все, що вам потрібно, це один інструмент, як cvs. У моєму випадку, намагаючись встановити його за допомогою macports, з'явилося спливаюче повідомлення з проханням встановити компілятор java (?!) І десятки інших пакетів, які потрібно було побудувати, щоб я швидко витягнув :)

Якщо все, що вам потрібно, є cvs, просто побудувати його самостійно легко і більш чисто, і в результаті бінарний інтегрується з усіма існуючими бібліотеками тощо на комп'ютері. Вам потрібно встановити Xcode та його інструменти командного рядка, але якщо вам потрібні cvs, я впевнений, що ви вже встановили це.

Отримати вихідний код cvs з:

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

розблокуйте його в папку, введіть папку та запустіть ./configure

Потім (на жаль) потрібно відредагувати файли у src / і lib /, щоб перейменувати їх функцію getline у, наприклад, getlineX, тому що getline стикається з функцією libc. Я міг би зробити цей патч і покласти кудись, що я думаю.

Після цього зробіть "make", і ви отримаєте двійковий файл у src / cvs, який ви можете помістити в папку ~ / bin або де б то не було, і переконайтеся, що ваш пункт PATH там.


& gt; Я міг би зробити цей патч і покласти кудись, що я думаю. Це було б добре, і варто відправити назад. (Не терміново для мене, я звичайно маю удачу з Homebrew.)
Flash Sheridan

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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.