Це команда git-cvsserver, яку можна запустити у безкоштовного хостинг-провайдера OnWorks за допомогою однієї з наших безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
git-cvsserver — емулятор сервера CVS для Git
СИНТАКСИС
SSH:
експорт CVS_SERVER="git cvsserver"
резюме -d :ext:user@server/path/repo.git co
pserver (/etc/inetd.conf):
cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
Використання:
git-cvsserver [параметри] [pserver|сервер] [ ...]
ВАРІАНТИ
Очевидно, що всі ці параметри мають сенс, лише якщо їх виконує сторона сервера. Вони були
реалізований, щоб нагадувати git-демон(1) варіанти якомога ближче.
--базовий шлях
Попередньо шлях до запитуваного CVSROOT
--суворі шляхи
Не дозволяйте рекурсію до підкаталогів
--експортувати-все
Не перевіряйте gitcvs.enabled у конфігурації. Також необхідно вказати список дозволених
каталоги (див. нижче), якщо ви бажаєте скористатися цією опцією.
-V, --версія
Роздрукувати інформацію про версію та вийти
-h, -H, --довідка
Роздрукуйте інформацію про використання та вийдіть
Ви можете вказати список дозволених каталогів. Якщо не надано жодного каталогу, є всі
дозволено. Це додаткове обмеження, доступ до gitcvs все одно потрібно ввімкнути
параметр конфігурації gitcvs.enabled, якщо не --експортувати-все також було надано.
ОПИС
Ця програма є рівнем емуляції CVS для Git.
Він дуже функціональний. Однак не всі методи реалізовані, а для тих методів
які реалізовані, не всі перемикачі реалізовані.
Тестування проводилося з використанням клієнта CLI CVS і плагіна Eclipse CVS. більшість
функціональність добре працює з обома цими клієнтами.
ОБМЕЖЕННЯ
Клієнти CVS не можуть додавати теги, розгалужуватися або виконувати злиття Git.
git-cvsserver відображає гілки Git на модулі CVS. Це дуже відрізняється від більшості CVS
користувачі очікують, оскільки в CVS модулі зазвичай представляють один або більше каталогів.
УСТАНОВКА
1. Якщо ви збираєтеся запропонувати доступ до CVS через pserver, додайте рядок у /etc/inetd.conf на зразок
cvspserver stream tcp nowait nobody git-cvsserver pserver
Примітка. Деякі сервери inetd дозволяють вказувати назву виконуваного файлу незалежно від
значення argv[0] (тобто ім'я, з яким програма припускає, що вона була виконана). У цьому
правильний рядок у /etc/inetd.conf виглядає так
cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
За замовчуванням pserve надає лише анонімний доступ. Щоб здійснити, вам доведеться
створити облікові записи pserver, просто додайте параметр gitcvs.authdb у файл конфігурації
сховища, до яких cvsserver має дозволити запис, наприклад:
[gitcvs]
authdb = /etc/cvsserver/passwd
Формат цих файлів — ім’я користувача, за яким слідує зашифрований пароль, наприклад:
мій користувач:$1Oyx5r9mdGZ2
мій користувач:$1$BA)@$vbnMJMDym7tA32AamXrm./
Ви можете використовувати htpasswd засіб, який постачається з Apache для створення цих файлів, але
Метод шифрування MD5 Apache відрізняється від того, який використовується більшістю бібліотек C crypt()
тому не використовуйте опцію -m.
Крім того, ви можете створити пароль за допомогою оператора perl crypt():
perl -e 'my ($user, $pass) = @ARGV; printf "%s:%s\n", $user, crypt($user, $pass)' пароль $USER
Потім введіть свій пароль за допомогою методу pserver, наприклад:
cvs -d:pserver:someuser:somepassword server/path/repo.git co
Для доступу SSH не потрібні спеціальні налаштування, окрім наявності інструментів Git у PATH. Якщо
у вас є клієнти, які не приймають змінну середовища CVS_SERVER, ви можете
перейменувати git-cvsserver до cvs.
Примітка. Новіші версії CVS (>= 1.12.11) також підтримують вказівку CVS_SERVER безпосередньо в
CVSROOT подобається
cvs -d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo.git" co
Перевагою цього є те, що він буде збережений у вашому CVS/корінь файли, які вам не потрібні
турбуватися про те, щоб завжди встановлювати правильну змінну середовища. Користувачі SSH обмежені
до git-оболонка не потрібно змінювати значення за замовчуванням за допомогою CVS_SERVER (і не слід), як
git-оболонка розуміє, що означає cv git-cvsserver і робить вигляд, що інший кінець біжить
справжній резюме краще
2. Для кожного сховища, до якого ви хочете отримати доступ із CVS, вам потрібно відредагувати конфігурацію в сховищі
і додайте наступний розділ.
[gitcvs]
розблоковано = 1
# необов'язковий для налагодження
logFile=/шлях/до/файлу журналу
Примітка: вам потрібно переконатися, що кожен користувач збирається викликати git-cvsserver написав
доступ до файлу журналу та бази даних (див. Базу даних. Якщо ви хочете запропонувати
доступ для запису через SSH, користувачам, звичайно, також потрібен доступ для запису до Git
сам репозиторій.
Вам також потрібно переконатися, що кожне сховище є «голим» (без файлу індексу Git) для
cvs взяти на себе зобов'язання працювати. Побачити gitcvs-міграція(7).
Усі змінні конфігурації також можна замінити для певного методу доступу.
Дійсні імена методів: «ext» (для доступу через SSH) і «pserver». Наступний приклад
конфігурація вимкне доступ до pserver, але дозволить доступ через SSH.
[gitcvs]
розблоковано = 0
[gitcvs "ext"]
розблоковано = 1
3. Якщо ви не вказали CVSROOT/CVS_SERVER безпосередньо в команді перевірки,
автоматично зберігаючи його у вашому CVS/корінь файлів, то вам потрібно встановити їх явно
у вашому оточенні. CVSROOT має бути встановлено як зазвичай, але каталог має бути встановлено
вказують на відповідне сховище Git. Як і вище, для клієнтів SSH НЕ обмежено до
git-оболонка, CVS_SERVER має бути встановлено на git-cvsserver.
експорт CVSROOT=:ext:user@server:/var/git/project.git
експорт CVS_SERVER="git cvsserver"
4. Для клієнтів SSH, які здійснюватимуть коміти, переконайтеся, що їхні серверні .ssh/середовище
файли (або .bashrc тощо, відповідно до їх конкретної оболонки) експортують відповідні значення
для GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME та GIT_COMMITTER_EMAIL.
Для SSH-клієнтів, чия оболонка входу в систему bash, .bashrc може бути розумною альтернативою.
5. Тепер клієнти повинні мати можливість перевірити проект. Використовуйте CVS Модулі ім'я до
вкажіть, що таке Git голова ви хочете перевірити. Це також встановлює ім'я вашого нового
вилучений каталог, якщо ви не вкажете інше за допомогою -d . Наприклад,
це перевіряється майстер відгалуження до каталогу project-master:
cvs co -d головний майстер проекту
DATABASE НАЗАД
git-cvsserver використовує одну базу даних на голову Git (тобто модуль CVS) для зберігання інформації про
репозиторій для підтримки узгоджених номерів версій CVS. База даних повинна бути
оновлюється (тобто записується) після кожного коміту.
Якщо фіксація виконується безпосередньо за допомогою git (на відміну від використання git-cvsserver) оновлення
має відбутися під час наступного доступу до сховища git-cvsserver, незалежно від доступу
метод і запитану операцію.
Це означає, що навіть якщо ви пропонуєте лише доступ для читання (наприклад, за допомогою методу pserver),
git-cvsserver для надійної роботи необхідно мати доступ для запису до бази даних (інакше ви
потрібно переконатися, що база даних завжди актуальна git-cvsserver виконується).
За замовчуванням він використовує бази даних SQLite у каталозі Git під назвою
gitcvs. .sqlite. Зауважте, що серверна частина SQLite створює тимчасові файли в
той же каталог, що й файл бази даних під час запису, тому цього може бути недостатньо для надання користувачам
використання git-cvsserver доступ на запис до файлу бази даних, не надаючи їм права на запис
також до каталогу.
Базу даних не можна надійно відновити в узгодженій формі після розгалуження
відстеження змінено. Приклад: для об’єднаних гілок git-cvsserver відстежує лише одну гілку
розвитку, а після а мерзотник злиття база даних, що поступово оновлюється, може відстежувати a
відрізняється від гілки бази даних, створеної з нуля, що спричиняє непослідовність CVS
номери ревізій. git-cvsserver не може дізнатися, яку гілку він би вибрав, якщо
його було запущено поступово перед злиттям. Отже, якщо вам доведеться повністю або частково (від стар
резервне копіювання) відновити базу даних, ви повинні бути підозрілими щодо вже існуючих пісочних програм CVS.
Ви можете налаштувати серверну частину бази даних за допомогою таких змінних конфігурації:
Налаштування база даних базова
git-cvsserver використовує модуль Perl DBI. Будь ласка, також прочитайте його документацію, якщо змінюється
ці змінні, особливо щодо DBI->connect().
gitcvs.dbName
Ім'я бази даних. Точне значення залежить від вибраного драйвера бази даних для SQLite
це ім'я файлу. Підтримує заміну змінних (див. нижче). Може не містити
крапка з комою (;). за замовчуванням: %Ggitcvs.%m.sqlite
gitcvs.dbDriver
Б/у драйвер DBI. Ви можете вказати будь-який доступний драйвер для цього тут, але це може бути не так
працювати. cvsserver протестовано за допомогою DBD::SQLite, повідомила про роботу с DBD::Pg та
повідомляє НЕ працювати DBD::mysql. Розглядайте це як експериментальну функцію.
Не може містити двокрапки (:). за замовчуванням: SQLite
gitcvs.dbuser
Користувач бази даних. Корисно, лише якщо встановити dbDriver, оскільки SQLite не має поняття
користувачів бази даних. Підтримує заміну змінних (див. нижче).
gitcvs.dbPass
Пароль бази даних. Корисно, лише якщо встановити dbDriver, оскільки SQLite не має поняття
паролі бази даних.
gitcvs.dbTableNamePrefix
Префікс імені таблиці бази даних. Підтримує заміну змінних (див. нижче). Будь-який
неалфавітні символи буде замінено підкресленням.
Усі змінні також можна встановити для кожного методу доступу, див. вище.
Змінна заміна
У dbDriver і dbUser можна використовувати такі змінні:
%G
Ім'я каталогу Git
%g
Ім'я каталогу Git, де всі символи, крім буквено-цифрових, ., та -
замінюються на _ (це повинно полегшити використання імені каталогу в a
ім'я файлу за бажанням)
%m
Назва модуля CVS/голови Git
%a
метод доступу (один із "ext" або "pserver")
%u
Ім'я запущеного користувача git-cvsserver. Якщо назва не може бути визначена, числове
uid використовується.
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
Ці змінні позбавляють потреби в параметрах командного рядка за деяких обставин, дозволяючи
легше обмежене використання через git-shell.
GIT_CVSSERVER_BASE_PATH замінює аргумент --base-path.
GIT_CVSSERVER_ROOT визначає білий список з одним каталогом. Репозиторій ще має бути
налаштований для дозволу доступу через git-cvsserver, як описано вище.
Якщо ці змінні середовища встановлено, відповідні аргументи командного рядка можуть бути відсутні
бути використаним.
ECLIPSE CVS КЛІЄНТ ПРИМІТКИ
Щоб оформити замовлення за допомогою клієнта Eclipse CVS:
1. Виберіть «Створити новий проект → З перевірки CVS»
2. Створіть нове розташування. Перегляньте примітки нижче, щоб дізнатися, як правильно вибрати
протокол
3. Перегляньте Модулі доступний. Це дасть вам список голів у сховищі.
Звідти ви не зможете переглядати дерево. Тільки голови.
4. Підберіть ГОЛОВА коли запитує, яку гілку/тег перевірити. Зніміть прапорець «запустити майстер фіксації»
щоб уникнути фіксації файлу .project.
Примітки щодо протоколу: якщо ви використовуєте анонімний доступ через pserver, просто виберіть це. Ті
за допомогою доступу SSH слід вибрати ext протокол і налаштуйте ext доступ на
Параметри→Команда→CVS→Панель ExtConnection. Встановіть для CVS_SERVER значення "git cvsserver". Зауважте, що
підтримка паролів не підходить під час використання ext, ви точно захочете мати ключі SSH
налаштування.
Крім того, ви можете просто використовувати нестандартний протокол extssh, який пропонує Eclipse. в
цей випадок CVS_SERVER ігнорується, і вам доведеться замінити утиліту cvs на
сервер з git-cvsserver або маніпулюйте своїм .bashrc, щоб виклик резюме ефективно дзвонить
git-cvsserver.
КЛІЄНТИ KNOWN TO РОБОТА
· CVS 1.12.9 на Debian
· CVS 1.11.17 на MacOSX (з пакету Fink)
· Eclipse 3.0, 3.1.2 на MacOSX (див. Примітки клієнта Eclipse CVS)
· TortoiseCVS
ОПЕРАЦІЇ ПІДТРИМАНО
Підтримуються всі операції, необхідні для нормального використання, включаючи перевірку, різницю,
статус, оновлення, журнал, додавання, видалення, фіксація.
Більшість аргументів команди CVS, які читають теги CVS або номери версій (зазвичай -r), працюють, і
також підтримує будь-яку специфікацію git ref (тег, гілка, ідентифікатор коміту тощо). Однак номери версій CVS
для нестандартних гілок погано емулюються, а журнал cvs не показує теги чи гілки
зовсім. (Номери версій CVS не головної гілки зовні нагадують номери версій CVS,
але насправді вони безпосередньо кодують ідентифікатор git commit, а не представляють кількість
перегляди з моменту відділення.)
Зауважте, що є два способи оплатити певне відділення. Як описано в іншому місці на
на цій сторінці параметр "module" cvs checkout інтерпретується як назва гілки, і це
стає головним відділенням. Вона залишається основною гілкою для даної пісочниці, навіть якщо ви
тимчасово зробити іншу гілку липкою за допомогою cvs update -r. Крім того, аргумент -r
може вказати іншу гілку для перевірки, навіть якщо модуль все ще є
«головна» гілка. Компроміси (як реалізовано зараз): кожен новий «модуль» створює новий
базу даних на диску з історією для даного модуля, а після створення бази даних,
операції проти цієї головної гілки є швидкими. Або, альтернативно, -r не бере жодних додаткових
дискового простору, але може бути значно повільнішим для багатьох операцій, як-от оновлення cvs.
Якщо ви хочете звернутися до git refspec, який містить символи, заборонені CVS, ви
є два варіанти. По-перше, це може просто надати git refspec безпосередньо до
відповідний аргумент CVS -r; деякі клієнти CVS, здається, не дуже перевіряють працездатність
аргумент. По-друге, якщо це не вдається, ви можете використати спеціальний механізм екранування символів, який
використовує лише символи, дійсні в тегах CVS. Послідовність із 4 або 5 символів
форма (підкреслення ("_"), тире ("-"), один або два символи та дефіс ("-")) може кодувати
різні символи на основі однієї або двох літер: "s" для косої риски ("/"), "p" для крапки
("."), "u" для підкреслення ("_") або дві шістнадцяткові цифри для будь-якого значення байта взагалі
(зазвичай номер ASCII або, можливо, частина символу в кодуванні UTF-8).
Застарілі операції моніторингу не підтримуються (редагування, перегляд тощо). Експорт і
теги (теги та гілки) на цьому етапі не підтримуються.
CRLF Лінія Закінчення Перетворення
За замовчуванням сервер залишає -k режим порожній для всіх файлів, який викликає клієнт CVS
розглядати їх як текстові файли, що підлягають перетворенню в кінці рядка на деяких платформах.
Ви можете змусити сервер використовувати атрибути перетворення кінця рядка для встановлення -k режими для
файли, встановивши змінну конфігурації gitcvs.usecrlfattr. Побачити gitattributes(5) більше
інформація про перетворення в кінці рядка.
Крім того, якщо конфігурацію gitcvs.usecrlfattr не ввімкнено або атрибути не дозволяють
автоматичне виявлення імені файлу, тоді сервер використовує конфігурацію gitcvs.allBinary для
налаштування за замовчуванням. Якщо встановлено gitcvs.allBinary, буде використано файл, не вказаний інакше
за замовчуванням до -kb режим. В іншому випадку -k режим залишається порожнім. Але якщо встановлено gitcvs.allBinary
«відгадати», то правильний -k режим буде визначено на основі вмісту файлу.
Для найкращої узгодженості з резюме, ймовірно, найкраще змінити значення за замовчуванням, встановивши
gitcvs.usecrlfattr у значення true, а gitcvs.allBinary у значення "guess".
ЗАЛЕЖНОСТІ
git-cvsserver залежить від DBD::SQLite.
GIT
Частина мерзотник(1) люкс
Використовуйте git-cvsserver онлайн за допомогою сервісів onworks.net