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

目錄 搜尋
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
文字

命名

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> …]

選項

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

--base-path <path>

預(yù)先path申請 CVSROOT

--strict-paths

不要允許遞歸到子目錄中

--export-all

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

-V   --version

打印版本信息并退出

-h   -H   --help

打印使用情況信息并退出

<directory>

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

描述

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

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

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

限制

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

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

安裝

  1. 如果您要通過 pserver 提供 CVS 訪問,請在 /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 允許寫入的存儲庫的配置文件中添加 gitcvs.authdb 設(shè)置,例如:

  [gitcvs]         authdb = /etc/cvsserver/passwd

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

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

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

或者,你可以用 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>

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

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

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

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

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

  [gitcvs]         enabled=0     [gitcvs "ext"]         enabled=1
  1. 如果您沒有直接在 checkout 命令中指定 CVSROOT / CVS_SERVER ,將其自動保存在CVS/Root文件中,那么您需要在您的環(huán)境中明確設(shè)置它們。CVSROOT 應(yīng)該按照正常進(jìn)行設(shè)置,但目錄應(yīng)該指向適當(dāng)?shù)?Git 倉庫。如上所述,對于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. 對于將進(jìn)行提交的 SSH 客戶端,請確保其服務(wù)器端 .ssh /environment 文件(或 .bashrc 等,根據(jù)其特定的外殼)為 GIT_AUTHOR_NAME ,GIT_AUTHOR_EMAIL ,GIT_COMMITTER_NAME 和 GIT_COMMITTER_EMAIL 導(dǎo)出適當(dāng)?shù)闹?。對于登?shell 為 bash 的 SSH 客戶端,.bashrc 可能是一個合理的選擇。

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

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

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

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

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

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

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

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

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

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

gitcvs.dbName

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

gitcvs.dbDriver

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

gitcvs.dbuser

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

gitcvs.dbPass

數(shù)據(jù)庫密碼。只有在設(shè)置時才有用dbDriver,因為 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)境

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

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

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

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

Eclipse cvs 客戶端筆記

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

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

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

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

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

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

或者,您可以使用 Eclipse 提供的非標(biāo)準(zhǔn) extssh 協(xié)議。在這種情況下,CVS_SERVER 將被忽略,并且您將不得不用服務(wù)器上的 cvs 實用程序替換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(請參閱 Eclipse CVS 客戶端注釋)

  • TortoiseCVS

支持的操作

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

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

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

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

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

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

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

Dependencies

git-cvsserver 依賴于 DBD :: SQLite 。

上一篇: 下一篇: