logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

git-cvsserver.1 (19120B)


  1. '\" t
  2. .\" Title: git-cvsserver
  3. .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
  4. .\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
  5. .\" Date: 2025-03-14
  6. .\" Manual: Git Manual
  7. .\" Source: Git 2.49.0
  8. .\" Language: English
  9. .\"
  10. .TH "GIT\-CVSSERVER" "1" "2025-03-14" "Git 2\&.49\&.0" "Git Manual"
  11. .\" -----------------------------------------------------------------
  12. .\" * Define some portability stuff
  13. .\" -----------------------------------------------------------------
  14. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. .\" http://bugs.debian.org/507673
  16. .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
  17. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  18. .ie \n(.g .ds Aq \(aq
  19. .el .ds Aq '
  20. .\" -----------------------------------------------------------------
  21. .\" * set default formatting
  22. .\" -----------------------------------------------------------------
  23. .\" disable hyphenation
  24. .nh
  25. .\" disable justification (adjust text to left margin only)
  26. .ad l
  27. .\" -----------------------------------------------------------------
  28. .\" * MAIN CONTENT STARTS HERE *
  29. .\" -----------------------------------------------------------------
  30. .SH "NAME"
  31. git-cvsserver \- A CVS server emulator for Git
  32. .SH "SYNOPSIS"
  33. .sp
  34. SSH:
  35. .sp
  36. .nf
  37. export CVS_SERVER="git cvsserver"
  38. \fIcvs\fR \-d :ext:user@server/path/repo\&.git co <HEAD_name>
  39. .fi
  40. .sp
  41. pserver (/etc/inetd\&.conf):
  42. .sp
  43. .nf
  44. cvspserver stream tcp nowait nobody /usr/bin/git\-cvsserver git\-cvsserver pserver
  45. .fi
  46. .sp
  47. Usage:
  48. .sp
  49. .nf
  50. \fIgit\-cvsserver\fR [<options>] [pserver|server] [<directory> \&...\:]
  51. .fi
  52. .SH "DESCRIPTION"
  53. .sp
  54. This application is a CVS emulation layer for Git\&.
  55. .sp
  56. It is highly functional\&. However, not all methods are implemented, and for those methods that are implemented, not all switches are implemented\&.
  57. .sp
  58. Testing has been done using both the CLI CVS client, and the Eclipse CVS plugin\&. Most functionality works fine with both of these clients\&.
  59. .SH "OPTIONS"
  60. .sp
  61. All these options obviously only make sense if enforced by the server side\&. They have been implemented to resemble the \fBgit-daemon\fR(1) options as closely as possible\&.
  62. .PP
  63. \-\-base\-path <path>
  64. .RS 4
  65. Prepend
  66. \fIpath\fR
  67. to requested CVSROOT
  68. .RE
  69. .PP
  70. \-\-strict\-paths
  71. .RS 4
  72. Don\(cqt allow recursing into subdirectories
  73. .RE
  74. .PP
  75. \-\-export\-all
  76. .RS 4
  77. Don\(cqt check for
  78. \fBgitcvs\&.enabled\fR
  79. in config\&. You also have to specify a list of allowed directories (see below) if you want to use this option\&.
  80. .RE
  81. .PP
  82. \-V, \-\-version
  83. .RS 4
  84. Print version information and exit
  85. .RE
  86. .PP
  87. \-h, \-H, \-\-help
  88. .RS 4
  89. Print usage information and exit
  90. .RE
  91. .PP
  92. <directory>
  93. .RS 4
  94. The remaining arguments provide a list of directories\&. If no directories are given, then all are allowed\&. Repositories within these directories still require the
  95. \fBgitcvs\&.enabled\fR
  96. config option, unless
  97. \fB\-\-export\-all\fR
  98. is specified\&.
  99. .RE
  100. .SH "LIMITATIONS"
  101. .sp
  102. CVS clients cannot tag, branch or perform Git merges\&.
  103. .sp
  104. \fIgit\-cvsserver\fR maps Git branches to CVS modules\&. This is very different from what most CVS users would expect since in CVS modules usually represent one or more directories\&.
  105. .SH "INSTALLATION"
  106. .sp
  107. .RS 4
  108. .ie n \{\
  109. \h'-04' 1.\h'+01'\c
  110. .\}
  111. .el \{\
  112. .sp -1
  113. .IP " 1." 4.2
  114. .\}
  115. If you are going to offer CVS access via pserver, add a line in /etc/inetd\&.conf like
  116. .sp
  117. .if n \{\
  118. .RS 4
  119. .\}
  120. .nf
  121. cvspserver stream tcp nowait nobody git\-cvsserver pserver
  122. .fi
  123. .if n \{\
  124. .RE
  125. .\}
  126. .sp
  127. Note: Some inetd servers let you specify the name of the executable independently of the value of argv[0] (i\&.e\&. the name the program assumes it was executed with)\&. In this case the correct line in /etc/inetd\&.conf looks like
  128. .sp
  129. .if n \{\
  130. .RS 4
  131. .\}
  132. .nf
  133. cvspserver stream tcp nowait nobody /usr/bin/git\-cvsserver git\-cvsserver pserver
  134. .fi
  135. .if n \{\
  136. .RE
  137. .\}
  138. .sp
  139. Only anonymous access is provided by pserver by default\&. To commit you will have to create pserver accounts, simply add a gitcvs\&.authdb setting in the config file of the repositories you want the cvsserver to allow writes to, for example:
  140. .sp
  141. .if n \{\
  142. .RS 4
  143. .\}
  144. .nf
  145. [gitcvs]
  146. authdb = /etc/cvsserver/passwd
  147. .fi
  148. .if n \{\
  149. .RE
  150. .\}
  151. .sp
  152. The format of these files is username followed by the encrypted password, for example:
  153. .sp
  154. .if n \{\
  155. .RS 4
  156. .\}
  157. .nf
  158. myuser:sqkNi8zPf01HI
  159. myuser:$1$9K7FzU28$VfF6EoPYCJEYcVQwATgOP/
  160. myuser:$5$\&.NqmNH1vwfzGpV8B$znZIcumu1tNLATgV2l6e1/mY8RzhUDHMOaVOeL1cxV3
  161. .fi
  162. .if n \{\
  163. .RE
  164. .\}
  165. .sp
  166. You can use the
  167. \fIhtpasswd\fR
  168. facility that comes with Apache to make these files, but only with the \-d option (or \-B if your system supports it)\&.
  169. .sp
  170. Preferably use the system specific utility that manages password hash creation in your platform (e\&.g\&. mkpasswd in Linux, encrypt in OpenBSD or pwhash in NetBSD) and paste it in the right location\&.
  171. .sp
  172. Then provide your password via the pserver method, for example:
  173. .sp
  174. .if n \{\
  175. .RS 4
  176. .\}
  177. .nf
  178. cvs \-d:pserver:someuser:somepassword@server:/path/repo\&.git co <HEAD_name>
  179. .fi
  180. .if n \{\
  181. .RE
  182. .\}
  183. .sp
  184. No special setup is needed for SSH access, other than having Git tools in the PATH\&. If you have clients that do not accept the CVS_SERVER environment variable, you can rename
  185. \fIgit\-cvsserver\fR
  186. to
  187. \fBcvs\fR\&.
  188. .sp
  189. Note: Newer CVS versions (>= 1\&.12\&.11) also support specifying CVS_SERVER directly in CVSROOT like
  190. .sp
  191. .if n \{\
  192. .RS 4
  193. .\}
  194. .nf
  195. cvs \-d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo\&.git" co <HEAD_name>
  196. .fi
  197. .if n \{\
  198. .RE
  199. .\}
  200. .sp
  201. This has the advantage that it will be saved in your
  202. \fICVS/Root\fR
  203. files and you don\(cqt need to worry about always setting the correct environment variable\&. SSH users restricted to
  204. \fIgit\-shell\fR
  205. don\(cqt need to override the default with CVS_SERVER (and shouldn\(cqt) as
  206. \fIgit\-shell\fR
  207. understands
  208. \fBcvs\fR
  209. to mean
  210. \fIgit\-cvsserver\fR
  211. and pretends that the other end runs the real
  212. \fIcvs\fR
  213. better\&.
  214. .RE
  215. .sp
  216. .RS 4
  217. .ie n \{\
  218. \h'-04' 2.\h'+01'\c
  219. .\}
  220. .el \{\
  221. .sp -1
  222. .IP " 2." 4.2
  223. .\}
  224. For each repo that you want accessible from CVS you need to edit config in the repo and add the following section\&.
  225. .sp
  226. .if n \{\
  227. .RS 4
  228. .\}
  229. .nf
  230. [gitcvs]
  231. enabled=1
  232. # optional for debugging
  233. logFile=/path/to/logfile
  234. .fi
  235. .if n \{\
  236. .RE
  237. .\}
  238. .sp
  239. Note: you need to ensure each user that is going to invoke
  240. \fIgit\-cvsserver\fR
  241. has write access to the log file and to the database (see
  242. Database Backend\&. If you want to offer write access over SSH, the users of course also need write access to the Git repository itself\&.
  243. .sp
  244. You also need to ensure that each repository is "bare" (without a Git index file) for
  245. \fBcvs\fR
  246. \fBcommit\fR
  247. to work\&. See
  248. \fBgitcvs-migration\fR(7)\&.
  249. .sp
  250. All configuration variables can also be overridden for a specific method of access\&. Valid method names are "ext" (for SSH access) and "pserver"\&. The following example configuration would disable pserver access while still allowing access over SSH\&.
  251. .sp
  252. .if n \{\
  253. .RS 4
  254. .\}
  255. .nf
  256. [gitcvs]
  257. enabled=0
  258. [gitcvs "ext"]
  259. enabled=1
  260. .fi
  261. .if n \{\
  262. .RE
  263. .\}
  264. .RE
  265. .sp
  266. .RS 4
  267. .ie n \{\
  268. \h'-04' 3.\h'+01'\c
  269. .\}
  270. .el \{\
  271. .sp -1
  272. .IP " 3." 4.2
  273. .\}
  274. If you didn\(cqt specify the CVSROOT/CVS_SERVER directly in the checkout command, automatically saving it in your
  275. \fICVS/Root\fR
  276. files, then you need to set them explicitly in your environment\&. CVSROOT should be set as per normal, but the directory should point at the appropriate Git repo\&. As above, for SSH clients
  277. \fInot\fR
  278. restricted to
  279. \fIgit\-shell\fR, CVS_SERVER should be set to
  280. \fIgit\-cvsserver\fR\&.
  281. .sp
  282. .if n \{\
  283. .RS 4
  284. .\}
  285. .nf
  286. export CVSROOT=:ext:user@server:/var/git/project\&.git
  287. export CVS_SERVER="git cvsserver"
  288. .fi
  289. .if n \{\
  290. .RE
  291. .\}
  292. .RE
  293. .sp
  294. .RS 4
  295. .ie n \{\
  296. \h'-04' 4.\h'+01'\c
  297. .\}
  298. .el \{\
  299. .sp -1
  300. .IP " 4." 4.2
  301. .\}
  302. For SSH clients that will make commits, make sure their server\-side \&.ssh/environment files (or \&.bashrc, etc\&., according to their specific shell) export appropriate values for GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, and GIT_COMMITTER_EMAIL\&. For SSH clients whose login shell is bash, \&.bashrc may be a reasonable alternative\&.
  303. .RE
  304. .sp
  305. .RS 4
  306. .ie n \{\
  307. \h'-04' 5.\h'+01'\c
  308. .\}
  309. .el \{\
  310. .sp -1
  311. .IP " 5." 4.2
  312. .\}
  313. Clients should now be able to check out the project\&. Use the CVS
  314. \fImodule\fR
  315. name to indicate what Git
  316. \fIhead\fR
  317. you want to check out\&. This also sets the name of your newly checked\-out directory, unless you tell it otherwise with
  318. \fB\-d\fR
  319. \fI<dir\-name>\fR\&. For example, this checks out
  320. \fImaster\fR
  321. branch to the
  322. \fBproject\-master\fR
  323. directory:
  324. .sp
  325. .if n \{\
  326. .RS 4
  327. .\}
  328. .nf
  329. cvs co \-d project\-master master
  330. .fi
  331. .if n \{\
  332. .RE
  333. .\}
  334. .RE
  335. .SH "DATABASE BACKEND"
  336. .sp
  337. \fIgit\-cvsserver\fR uses one database per Git head (i\&.e\&. CVS module) to store information about the repository to maintain consistent CVS revision numbers\&. The database needs to be updated (i\&.e\&. written to) after every commit\&.
  338. .sp
  339. If the commit is done directly by using \fBgit\fR (as opposed to using \fIgit\-cvsserver\fR) the update will need to happen on the next repository access by \fIgit\-cvsserver\fR, independent of access method and requested operation\&.
  340. .sp
  341. That means that even if you offer only read access (e\&.g\&. by using the pserver method), \fIgit\-cvsserver\fR should have write access to the database to work reliably (otherwise you need to make sure that the database is up to date any time \fIgit\-cvsserver\fR is executed)\&.
  342. .sp
  343. By default it uses SQLite databases in the Git directory, named \fBgitcvs\&.\fR\fI<module\-name>\fR\fB\&.sqlite\fR\&. Note that the SQLite backend creates temporary files in the same directory as the database file on write so it might not be enough to grant the users using \fIgit\-cvsserver\fR write access to the database file without granting them write access to the directory, too\&.
  344. .sp
  345. The database cannot be reliably regenerated in a consistent form after the branch it is tracking has changed\&. Example: For merged branches, \fIgit\-cvsserver\fR only tracks one branch of development, and after a \fIgit merge\fR an incrementally updated database may track a different branch than a database regenerated from scratch, causing inconsistent CVS revision numbers\&. \fBgit\-cvsserver\fR has no way of knowing which branch it would have picked if it had been run incrementally pre\-merge\&. So if you have to fully or partially (from old backup) regenerate the database, you should be suspicious of pre\-existing CVS sandboxes\&.
  346. .sp
  347. You can configure the database backend with the following configuration variables:
  348. .SS "Configuring database backend"
  349. .sp
  350. \fIgit\-cvsserver\fR uses the Perl DBI module\&. Please also read its documentation if changing these variables, especially about \fBDBI\-\fR>\fBconnect\fR()\&.
  351. .PP
  352. gitcvs\&.dbName
  353. .RS 4
  354. Database name\&. The exact meaning depends on the selected database driver, for SQLite this is a filename\&. Supports variable substitution (see below)\&. May not contain semicolons (;)\&. Default:
  355. \fI%Ggitcvs\&.%m\&.sqlite\fR
  356. .RE
  357. .PP
  358. gitcvs\&.dbDriver
  359. .RS 4
  360. Used DBI driver\&. You can specify any available driver for this here, but it might not work\&. cvsserver is tested with
  361. \fIDBD::SQLite\fR, reported to work with
  362. \fIDBD::Pg\fR, and reported
  363. \fBnot\fR
  364. to work with
  365. \fIDBD::mysql\fR\&. Please regard this as an experimental feature\&. May not contain colons (\fB:\fR)\&. Default:
  366. \fISQLite\fR
  367. .RE
  368. .PP
  369. gitcvs\&.dbuser
  370. .RS 4
  371. Database user\&. Only useful if setting
  372. \fBdbDriver\fR, since SQLite has no concept of database users\&. Supports variable substitution (see below)\&.
  373. .RE
  374. .PP
  375. gitcvs\&.dbPass
  376. .RS 4
  377. Database password\&. Only useful if setting
  378. \fBdbDriver\fR, since SQLite has no concept of database passwords\&.
  379. .RE
  380. .PP
  381. gitcvs\&.dbTableNamePrefix
  382. .RS 4
  383. Database table name prefix\&. Supports variable substitution (see below)\&. Any non\-alphabetic characters will be replaced with underscores\&.
  384. .RE
  385. .sp
  386. All variables can also be set per access method, see above\&.
  387. .sp
  388. .it 1 an-trap
  389. .nr an-no-space-flag 1
  390. .nr an-break-flag 1
  391. .br
  392. .ps +1
  393. \fBVariable substitution\fR
  394. .RS 4
  395. .sp
  396. In \fBdbDriver\fR and \fBdbUser\fR you can use the following variables:
  397. .PP
  398. %G
  399. .RS 4
  400. Git directory name
  401. .RE
  402. .PP
  403. %g
  404. .RS 4
  405. Git directory name, where all characters except for alphanumeric ones, \&., and
  406. \fB\-\fR
  407. are replaced with
  408. \fB_\fR
  409. (this should make it easier to use the directory name in a filename if wanted)
  410. .RE
  411. .PP
  412. %m
  413. .RS 4
  414. CVS module/Git head name
  415. .RE
  416. .PP
  417. %a
  418. .RS 4
  419. access method (one of "ext" or "pserver")
  420. .RE
  421. .PP
  422. %u
  423. .RS 4
  424. Name of the user running
  425. \fIgit\-cvsserver\fR\&. If no name can be determined, the numeric uid is used\&.
  426. .RE
  427. .RE
  428. .SH "ENVIRONMENT"
  429. .sp
  430. These variables obviate the need for command\-line options in some circumstances, allowing easier restricted usage through git\-shell\&.
  431. .PP
  432. GIT_CVSSERVER_BASE_PATH
  433. .RS 4
  434. This variable replaces the argument to \-\-base\-path\&.
  435. .RE
  436. .PP
  437. GIT_CVSSERVER_ROOT
  438. .RS 4
  439. This variable specifies a single directory, replacing the
  440. \fI<directory>\fR\&.\&.\&. argument list\&. The repository still requires the
  441. \fBgitcvs\&.enabled\fR
  442. config option, unless
  443. \fB\-\-export\-all\fR
  444. is specified\&.
  445. .RE
  446. .sp
  447. When these environment variables are set, the corresponding command\-line arguments may not be used\&.
  448. .SH "ECLIPSE CVS CLIENT NOTES"
  449. .sp
  450. To get a checkout with the Eclipse CVS client:
  451. .sp
  452. .RS 4
  453. .ie n \{\
  454. \h'-04' 1.\h'+01'\c
  455. .\}
  456. .el \{\
  457. .sp -1
  458. .IP " 1." 4.2
  459. .\}
  460. Select "Create a new project \(-> From CVS checkout"
  461. .RE
  462. .sp
  463. .RS 4
  464. .ie n \{\
  465. \h'-04' 2.\h'+01'\c
  466. .\}
  467. .el \{\
  468. .sp -1
  469. .IP " 2." 4.2
  470. .\}
  471. Create a new location\&. See the notes below for details on how to choose the right protocol\&.
  472. .RE
  473. .sp
  474. .RS 4
  475. .ie n \{\
  476. \h'-04' 3.\h'+01'\c
  477. .\}
  478. .el \{\
  479. .sp -1
  480. .IP " 3." 4.2
  481. .\}
  482. Browse the
  483. \fImodules\fR
  484. available\&. It will give you a list of the heads in the repository\&. You will not be able to browse the tree from there\&. Only the heads\&.
  485. .RE
  486. .sp
  487. .RS 4
  488. .ie n \{\
  489. \h'-04' 4.\h'+01'\c
  490. .\}
  491. .el \{\
  492. .sp -1
  493. .IP " 4." 4.2
  494. .\}
  495. Pick
  496. \fBHEAD\fR
  497. when it asks what branch/tag to check out\&. Untick the "launch commit wizard" to avoid committing the \&.project file\&.
  498. .RE
  499. .sp
  500. Protocol notes: If you are using anonymous access via pserver, just select that\&. Those using SSH access should choose the \fIext\fR protocol, and configure \fIext\fR access on the Preferences\(->Team\(->CVS\(->ExtConnection pane\&. Set CVS_SERVER to "\fBgit\fR \fBcvsserver\fR"\&. Note that password support is not good when using \fIext\fR, you will definitely want to have SSH keys setup\&.
  501. .sp
  502. Alternatively, you can just use the non\-standard extssh protocol that Eclipse offer\&. In that case CVS_SERVER is ignored, and you will have to replace the cvs utility on the server with \fIgit\-cvsserver\fR or manipulate your \&.\fBbashrc\fR so that calling \fIcvs\fR effectively calls \fIgit\-cvsserver\fR\&.
  503. .SH "CLIENTS KNOWN TO WORK"
  504. .sp
  505. .RS 4
  506. .ie n \{\
  507. \h'-04'\(bu\h'+03'\c
  508. .\}
  509. .el \{\
  510. .sp -1
  511. .IP \(bu 2.3
  512. .\}
  513. CVS 1\&.12\&.9 on Debian
  514. .RE
  515. .sp
  516. .RS 4
  517. .ie n \{\
  518. \h'-04'\(bu\h'+03'\c
  519. .\}
  520. .el \{\
  521. .sp -1
  522. .IP \(bu 2.3
  523. .\}
  524. CVS 1\&.11\&.17 on MacOSX (from Fink package)
  525. .RE
  526. .sp
  527. .RS 4
  528. .ie n \{\
  529. \h'-04'\(bu\h'+03'\c
  530. .\}
  531. .el \{\
  532. .sp -1
  533. .IP \(bu 2.3
  534. .\}
  535. Eclipse 3\&.0, 3\&.1\&.2 on MacOSX (see Eclipse CVS Client Notes)
  536. .RE
  537. .sp
  538. .RS 4
  539. .ie n \{\
  540. \h'-04'\(bu\h'+03'\c
  541. .\}
  542. .el \{\
  543. .sp -1
  544. .IP \(bu 2.3
  545. .\}
  546. TortoiseCVS
  547. .RE
  548. .SH "OPERATIONS SUPPORTED"
  549. .sp
  550. All the operations required for normal use are supported, including checkout, diff, status, update, log, add, remove, commit\&.
  551. .sp
  552. Most CVS command arguments that read CVS tags or revision numbers (typically \-r) work, and also support any git refspec (tag, branch, commit ID, etc)\&. However, CVS revision numbers for non\-default branches are not well emulated, and cvs log does not show tags or branches at all\&. (Non\-main\-branch CVS revision numbers superficially resemble CVS revision numbers, but they actually encode a git commit ID directly, rather than represent the number of revisions since the branch point\&.)
  553. .sp
  554. Note that there are two ways to checkout a particular branch\&. As described elsewhere on this page, the "module" parameter of cvs checkout is interpreted as a branch name, and it becomes the main branch\&. It remains the main branch for a given sandbox even if you temporarily make another branch sticky with cvs update \-r\&. Alternatively, the \-r argument can indicate some other branch to actually checkout, even though the module is still the "main" branch\&. Tradeoffs (as currently implemented): Each new "module" creates a new database on disk with a history for the given module, and after the database is created, operations against that main branch are fast\&. Or alternatively, \-r doesn\(cqt take any extra disk space, but may be significantly slower for many operations, like cvs update\&.
  555. .sp
  556. If you want to refer to a git refspec that has characters that are not allowed by CVS, you have two options\&. First, it may just work to supply the git refspec directly to the appropriate CVS \-r argument; some CVS clients don\(cqt seem to do much sanity checking of the argument\&. Second, if that fails, you can use a special character escape mechanism that only uses characters that are valid in CVS tags\&. A sequence of 4 or 5 characters of the form (underscore ("_"), dash ("\-"), one or two characters, and dash ("\-")) can encode various characters based on the one or two letters: "s" for slash ("/"), "p" for period ("\&."), "u" for underscore ("_"), or two hexadecimal digits for any byte value at all (typically an ASCII number, or perhaps a part of a UTF\-8 encoded character)\&.
  557. .sp
  558. Legacy monitoring operations are not supported (edit, watch and related)\&. Exports and tagging (tags and branches) are not supported at this stage\&.
  559. .SS "CRLF Line Ending Conversions"
  560. .sp
  561. By default the server leaves the \fB\-k\fR mode blank for all files, which causes the CVS client to treat them as a text files, subject to end\-of\-line conversion on some platforms\&.
  562. .sp
  563. You can make the server use the end\-of\-line conversion attributes to set the \fB\-k\fR modes for files by setting the \fBgitcvs\&.usecrlfattr\fR config variable\&. See \fBgitattributes\fR(5) for more information about end\-of\-line conversion\&.
  564. .sp
  565. Alternatively, if \fBgitcvs\&.usecrlfattr\fR config is not enabled or the attributes do not allow automatic detection for a filename, then the server uses the \fBgitcvs\&.allBinary\fR config for the default setting\&. If \fBgitcvs\&.allBinary\fR is set, then file not otherwise specified will default to \fI\-kb\fR mode\&. Otherwise the \fB\-k\fR mode is left blank\&. But if \fBgitcvs\&.allBinary\fR is set to "guess", then the correct \fB\-k\fR mode will be guessed based on the contents of the file\&.
  566. .sp
  567. For best consistency with \fIcvs\fR, it is probably best to override the defaults by setting \fBgitcvs\&.usecrlfattr\fR to true, and \fBgitcvs\&.allBinary\fR to "guess"\&.
  568. .SH "DEPENDENCIES"
  569. .sp
  570. \fIgit\-cvsserver\fR depends on DBD::SQLite\&.
  571. .SH "GIT"
  572. .sp
  573. Part of the \fBgit\fR(1) suite