亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

命名

git-cvsserver  -  Git 的 CVS 服務(wù)器模擬器

概要

SSH:

export CVS_SERVER="git cvsserver"cvs -d :ext:user@server/path/repo.git co <HEAD_name>

pserver(/etc/inetd.conf):

cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver

用法:

git-cvsserver [options] [pserver|server] [<directory> …]

選項(xiàng)

所有這些選項(xiàng)顯然只有在服務(wù)器端強(qiáng)制執(zhí)行時(shí)才有意義。它們已經(jīng)被實(shí)現(xiàn)為盡可能地與 git-daemon [1] 選項(xiàng)類似。

--base-path <path>

預(yù)先path申請(qǐng) CVSROOT

--strict-paths

不要允許遞歸到子目錄中

--export-all

不要gitcvs.enabled在配置中檢查。如果要使用此選項(xiàng),還必須指定允許的目錄列表(請(qǐng)參見下文)。

-V   --version

打印版本信息并退出

-h   -H   --help

打印使用情況信息并退出

<directory>

您可以指定允許的目錄列表。如果沒有給出目錄,則全部允許。這是一個(gè)額外的限制,gitcvs 訪問仍然需要gitcvs.enabled配置選項(xiàng)啟用,除非--export-all被給予。

描述

此應(yīng)用程序是 Git 的 CVS 仿真層。

它功能強(qiáng)大。但是并非所有方法都已實(shí)施,對(duì)于已實(shí)施的方法,并非所有交換機(jī)都已實(shí)施。

使用 CLI CVS 客戶端和 Eclipse CVS 插件完成了測(cè)試。大多數(shù)功能都可以與這兩個(gè)客戶端正常工作。

限制

CVS 客戶端不能標(biāo)記,分支或執(zhí)行 Git 合并。

git-cvsserver將 Git 分支映射到 CVS 模塊。這與大多數(shù) CVS 用戶所期望的完全不同,因?yàn)樵?CVS 中,模塊通常代表一個(gè)或多個(gè)目錄。

安裝

  1. 如果您要通過 pserver 提供 CVS 訪問,請(qǐng)?jiān)?/etc/inetd.conf 中添加一行,如 cvspserver stream tcp nowait nobody git-cvsserver pserver

注意:某些 inetd 服務(wù)器允許您指定獨(dú)立于 argv0 值的可執(zhí)行文件的名稱。在這種情況下,/etc/inetd.conf 中的正確行看起來像

  cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver

pserve 默認(rèn)只提供匿名訪問。要提交,您必須創(chuàng)建 pserver 帳戶,只需在要讓 cvsserver 允許寫入的存儲(chǔ)庫的配置文件中添加 gitcvs.authdb 設(shè)置,例如:

  [gitcvs]         authdb = /etc/cvsserver/passwd

這些文件的格式是用戶名后跟加密的密碼,例如:

  myuser:$1Oyx5r9mdGZ2    myuser:$1$BA)@$vbnMJMDym7tA32AamXrm./

您可以使用htpasswd Apache 提供的工具來生成這些文件,但是 Apache 的 MD5 加密方法與大多數(shù) C 庫的 crypt()函數(shù)所使用的方法不同,因此不要使用 -m 選項(xiàng)。

或者,你可以用 perl 的 crypt()運(yùn)算符產(chǎn)生密碼:

  perl -e 'my ($user, $pass) = @ARGV; printf "%s:%s\n", $user, crypt($user, $pass)' $USER password

然后通過 pserver 方法提供您的密碼,例如:

  cvs -d:pserver:someuser:somepassword <at> server/path/repo.git co <HEAD\_name>

除了在 PATH 中使用 Git 工具之外,SSH 訪問不需要任何特殊設(shè)置。如果您的客戶端不接受 CVS_SERVER 環(huán)境變量,則可以重命名git-cvsservercvs

注意:較新的 CVS 版本(> = 1.12.11)也支持直接在 CVSROOT 中指定 CVS_SERVER

cvs -d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo.git" co <HEAD_name>

這有一個(gè)好處,它將被保存在你的CVS/Root文件中,你不必?fù)?dān)心總是設(shè)置正確的環(huán)境變量。受限制的 SSH 用戶git-shell不需要用 CVS_SERVER 覆蓋缺省值(而且不應(yīng)該)git-shell理解cvs為意味著git-cvsserver并假裝另一端運(yùn)行得cvs更好。

  1. 對(duì)于您想要從 CVS 訪問的每個(gè)回購,您需要編輯回購中的配置并添加以下部分。gitcvs enabled = 1??蛇x,用于調(diào)試 logFile = / path / to / logfile

注意:您需要確保要調(diào)用的每個(gè)用戶git-cvsserver都有對(duì)日志文件和數(shù)據(jù)庫的寫入權(quán)限(請(qǐng)參閱 Database Backend 。如果您想通過 SSH 提供寫入權(quán)限,用戶當(dāng)然也需要對(duì) Git 的寫入權(quán)限存儲(chǔ)庫本身。

您還需要確保每個(gè)存儲(chǔ)庫都是 “bare”(沒有 Git 索引文件)cvs commit才能工作。請(qǐng)參閱 gitcvs-migration [7]。

對(duì)于特定的訪問方法,所有配置變量也可以被覆蓋。有效的方法名稱是 “ext”(用于 SSH 訪問)和 “pserver” 。以下示例配置將禁用 pserver 訪問,同時(shí)仍允許通過 SSH 進(jìn)行訪問。

  [gitcvs]         enabled=0     [gitcvs "ext"]         enabled=1
  1. 如果您沒有直接在 checkout 命令中指定 CVSROOT / CVS_SERVER ,將其自動(dòng)保存在CVS/Root文件中,那么您需要在您的環(huán)境中明確設(shè)置它們。CVSROOT 應(yīng)該按照正常進(jìn)行設(shè)置,但目錄應(yīng)該指向適當(dāng)?shù)?Git 倉庫。如上所述,對(duì)于not限制為 SSH 的客戶端git-shell,應(yīng)將 CVS_SERVER 設(shè)置為git-cvsserver。export CVSROOT =:ext:user @ server:/var/git/project.git export CVS_SERVER =“git cvsserver”

  2. 對(duì)于將進(jìn)行提交的 SSH 客戶端,請(qǐng)確保其服務(wù)器端 .ssh /environment 文件(或 .bashrc 等,根據(jù)其特定的外殼)為 GIT_AUTHOR_NAME ,GIT_AUTHOR_EMAIL ,GIT_COMMITTER_NAME 和 GIT_COMMITTER_EMAIL 導(dǎo)出適當(dāng)?shù)闹怠?duì)于登錄 shell 為 bash 的 SSH 客戶端,.bashrc 可能是一個(gè)合理的選擇。

  3. 客戶現(xiàn)在應(yīng)該能夠檢查項(xiàng)目。使用 CVS module名稱來表明head你想要簽出的 Git 。這也設(shè)置了新檢出目錄的名稱,除非您另有說明-d <dir_name>。例如,這將檢查master分支到project-master目錄:cvs co -d project-master master

數(shù)據(jù)庫后端

git-cvsserver每個(gè) Git 頭部(即 CVS 模塊)使用一個(gè)數(shù)據(jù)庫來存儲(chǔ)關(guān)于存儲(chǔ)庫的信息以保持一致的 CVS 修訂號(hào)。數(shù)據(jù)庫需要在每次提交后更新(即寫入)。

如果提交是通過使用git(而不是使用git-cvsserver)直接完成的,則更新將需要在下一個(gè)存儲(chǔ)庫訪問時(shí)發(fā)生git-cvsserver,與訪問方法和請(qǐng)求的操作無關(guān)。

這意味著,即使您只提供讀訪問權(quán)限(例如通過使用pserver方法),也git-cvsserver應(yīng)該具有對(duì)數(shù)據(jù)庫的寫訪問權(quán)限以便可靠地工作(否則,您需要確保數(shù)據(jù)庫在任何時(shí)候git-cvsserver執(zhí)行都是最新的) 。

默認(rèn)情況下,它使用 Git 目錄中的 SQLite 數(shù)據(jù)庫,名為gitcvs.<module_name>.sqlite。請(qǐng)注意,SQLite 后端在寫入數(shù)據(jù)庫文件的同一目錄中創(chuàng)建臨時(shí)文件,因此它可能不足以授予用戶git-cvsserver對(duì)數(shù)據(jù)庫文件的寫入訪問權(quán)限,但不授予它們對(duì)目錄的寫入訪問權(quán)限。

在跟蹤發(fā)生變化的分支后,數(shù)據(jù)庫不能以一致的形式可靠地重新生成。示例:對(duì)于合并分支,git-cvsserver僅跟蹤開發(fā)的一個(gè)分支,并且在git merge增量更新的數(shù)據(jù)庫跟蹤與從頭開始重新生成的數(shù)據(jù)庫不同的分支之后,會(huì)導(dǎo)致 CVS 修訂版編號(hào)不一致。git-cvsserver沒有辦法知道哪個(gè)分支它會(huì)選擇如果它已經(jīng)逐步運(yùn)行預(yù)合并。因此,如果您必須完全或部分(從舊備份)重新生成數(shù)據(jù)庫,則應(yīng)該懷疑預(yù)先存在的 CVS 沙箱。

您可以使用以下配置變量來配置數(shù)據(jù)庫后端:

配置數(shù)據(jù)庫后端

git-cvsserver使用 Perl DBI 模塊。如果更改這些變量,請(qǐng)閱讀它的文檔,尤其是關(guān)于DBI->connect()。

gitcvs.dbName

數(shù)據(jù)庫名稱。確切的含義取決于選定的數(shù)據(jù)庫驅(qū)動(dòng)程序,對(duì)于 SQLite 這是一個(gè)文件名。支持變量替換(見下文)。不能包含分號(hào)(;)。默認(rèn):%Ggitcvs.%m.sqlite

gitcvs.dbDriver

使用的 DBI 驅(qū)動(dòng)程序。你可以在這里指定任何可用的驅(qū)動(dòng)程序,但它可能不起作用。cvsserver 已經(jīng)過測(cè)試DBD::SQLite,報(bào)告可以使用DBD::Pg,并且報(bào)告不能使用DBD::mysql。請(qǐng)將此視為實(shí)驗(yàn)性功能。不能包含冒號(hào)(:)。默認(rèn):SQLite

gitcvs.dbuser

數(shù)據(jù)庫用戶。只有在設(shè)置時(shí)才有用dbDriver,因?yàn)?SQLite 沒有數(shù)據(jù)庫用戶的概念。支持變量替換(見下文)。

gitcvs.dbPass

數(shù)據(jù)庫密碼。只有在設(shè)置時(shí)才有用dbDriver,因?yàn)?SQLite 沒有數(shù)據(jù)庫密碼的概念。

gitcvs.dbTableNamePrefix

數(shù)據(jù)庫表名稱前綴。支持變量替換(見下文)。任何非字母字符將被替換為下劃線。

所有變量也可以根據(jù)訪問方法設(shè)置,參見上文。

變量替代

dbDriverdbUser你可以使用以下變量:

%G

Git 目錄名稱

%g

Git 的目錄名,其中除字母數(shù)字以外的所有字符.,并-與更換_(這應(yīng)該更容易地在文件名中使用的目錄名稱,如果想)

%m

CVS 模塊 / Git 頭名稱

%a

訪問方法(“ext” 或 “pserver” 之一)

%u

正在運(yùn)行的用戶的名稱git-cvsserver。如果不能確定名稱,則使用數(shù)字 uid 。

環(huán)境

在某些情況下,這些變量可以避免使用命令行選項(xiàng),從而通過 git-shell 更容易地限制使用。

GIT_CVSSERVER_BASE_PATH 取代了 --base-path 的參數(shù)。

GIT_CVSSERVER_ROOT 指定單目錄白名單。如上所述,存儲(chǔ)庫仍必須配置為允許通過 git-cvsserver 進(jìn)行訪問。

當(dāng)設(shè)置這些環(huán)境變量時(shí),可能不會(huì)使用相應(yīng)的命令行參數(shù)。

Eclipse cvs 客戶端筆記

要使用 Eclipse CVS 客戶端進(jìn)行結(jié)帳,請(qǐng)執(zhí)行以下操作:

  1. 選擇“創(chuàng)建新項(xiàng)目→從 CVS 簽出”

  2. 創(chuàng)建一個(gè)新的位置。有關(guān)如何選擇正確協(xié)議的詳細(xì)信息,請(qǐng)參閱下面的注釋。

  3. 瀏覽modules可用。它會(huì)給你一個(gè)存儲(chǔ)庫中頭的列表。你將無法從那里瀏覽樹。只有頭部。

  4. 挑選HEAD時(shí),它會(huì)詢問什么分支/標(biāo)簽退房。取消“啟動(dòng)提交向?qū)А币员苊馓峤?.project 文件。

協(xié)議說明:如果您通過 pserver 使用匿名訪問,請(qǐng)選擇該選項(xiàng)。那些使用 SSH 訪問的應(yīng)該選擇ext協(xié)議,并ext在首選項(xiàng)→團(tuán)隊(duì)→ CVS → ExtConnection 窗格中配置訪問權(quán)限。將 CVS_SERVER 設(shè)置為“ git cvsserver”。請(qǐng)注意,密碼支持在使用時(shí)不好ext,你一定會(huì)想要設(shè)置 SSH 密鑰。

或者,您可以使用 Eclipse 提供的非標(biāo)準(zhǔn) extssh 協(xié)議。在這種情況下,CVS_SERVER 將被忽略,并且您將不得不用服務(wù)器上的 cvs 實(shí)用程序替換git-cvsserver或操作您的服務(wù)器,.bashrc以便cvs有效地調(diào)用呼叫git-cvsserver。

已知客戶端工作

  • CVS 1.12.9在 Debian 上

  • MacOSX 上的 CVS 1.11.17(來自 Fink 包)

  • MacOSX 上的 Eclipse 3.0,3.1.2(請(qǐng)參閱 Eclipse CVS 客戶端注釋)

  • TortoiseCVS

支持的操作

支持正常使用所需的所有操作,包括checkout ,diff ,status ,update ,log ,add ,remove ,commit 。

大多數(shù)讀取 CVS 標(biāo)簽或版本號(hào)(通常是 -r )的 CVS 命令參數(shù)都可以工作,并且還支持任何 git refspec(標(biāo)簽,分支,提交 ID 等)。但是,對(duì)于非默認(rèn)分支的 CVS 修訂版編號(hào)沒有很好地模擬,并且 CVS 日志根本不顯示標(biāo)簽或分支。(非主分支 CVS 修訂版本號(hào)與 CVS 修訂版號(hào)相似,但實(shí)際上它們直接編碼了一個(gè) git commit ID ,而不是代表自分支點(diǎn)以來修訂版的數(shù)目。)

請(qǐng)注意,有兩種方法可以檢出特定的分支。如本頁其他地方所述,cvs checkout 的 “module” 參數(shù)被解釋為分支名稱,并且它將成為主分支。它仍然是給定沙箱的主要分支,即使您暫時(shí)使用 cvs update -r 使另一個(gè)分支變得粘稠。另外,即使模塊仍然是 “main” 分支,-r 參數(shù)可以指示其他分支實(shí)際結(jié)帳。權(quán)衡(當(dāng)前實(shí)施):每個(gè)新的“模塊”在磁盤上為給定模塊創(chuàng)建一個(gè)新的數(shù)據(jù)庫歷史數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫后,對(duì)該主要分支的操作很快。或者,-r 不會(huì)占用額外的磁盤空間,但對(duì)于許多操作(如 cvs update )可能會(huì)明顯較慢。

如果你想?yún)⒖家粋€(gè) git refspec ,它有 CVS 不允許的字符,你有兩個(gè)選擇。首先,它可能只是將 git refspec 直接提供給適當(dāng)?shù)?CVS -r 參數(shù); 一些 CVS 客戶似乎沒有對(duì)這個(gè)論點(diǎn)做太多的理智檢查。其次,如果失敗,您可以使用特殊字符轉(zhuǎn)義機(jī)制,它只使用在 CVS 標(biāo)記中有效的字符。(下劃線("_"),短劃線("-"),一個(gè)或兩個(gè)字符以及短劃線("-"))的4或5個(gè)字符的序列可以根據(jù)一個(gè)或兩個(gè)字母對(duì)各種字符進(jìn)行編碼:"s"for slash("/"),"p"for period(".") ,"u"用于下劃線("_"),或者任何字節(jié)值(通常是 ASCII 碼,或者可能是 UTF-8 編碼字符的一部分)的兩個(gè)十六進(jìn)制數(shù)字。

傳統(tǒng)監(jiān)控操作不受支持(編輯,監(jiān)視和相關(guān))。此階段不支持導(dǎo)出和標(biāo)記(標(biāo)記和分支)。

CRLF 行結(jié)束轉(zhuǎn)換

默認(rèn)情況下,服務(wù)器將-k所有文件的模式留空,這會(huì)導(dǎo)致 CVS 客戶端將它們視為文本文件,并受某些平臺(tái)上的行尾轉(zhuǎn)換影響。

您可以通過設(shè)置gitcvs.usecrlfattr配置變量使服務(wù)器使用行尾轉(zhuǎn)換屬性來設(shè)置-k的模式。請(qǐng)參閱 gitattributes [5] 以獲取有關(guān)行尾轉(zhuǎn)換的更多信息。

或者,如果gitcvs.usecrlfattrconfig未啟用或者屬性不允許自動(dòng)檢測(cè)文件名,則服務(wù)器使用gitcvs.allBinaryconfig作為默認(rèn)設(shè)置。如果gitcvs.allBinary已設(shè)置,則未指定的文件將默認(rèn)為-kb模式。否則,該-k模式留空。但是如果gitcvs.allBinary設(shè)置為“猜測(cè)”,則-k根據(jù)文件的內(nèi)容猜測(cè)正確的模式。

為了達(dá)到最佳一致性cvs,最好通過設(shè)置gitcvs.usecrlfattr為 true 來覆蓋默認(rèn)值,gitcvs.allBinary“猜測(cè)”。

Dependencies

git-cvsserver 依賴于 DBD :: SQLite 。

Previous article: Next article: