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

Verzeichnis suchen
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
Figuren

名稱

git-http-backend  -  Git 在HTTP的服務器端實現(xiàn)

概要

git http-backend

描述

一個簡單的 CGI 程序,用于向通過 http://和https://協(xié)議訪問存儲庫的 Git 客戶端提供 Git 存儲庫的內容。該程序支持客戶端使用智能 HTTP 協(xié)議和向后兼容的愚蠢 HTTP 協(xié)議以及客戶端使用智能 HTTP 協(xié)議進行推送。

它會驗證該目錄是否具有魔術文件“git-daemon-export-ok”,并且它會拒絕導出任何未明確標記為導出的 Git 目錄(除非GIT_HTTP_EXPORT_ALL設置了環(huán)境變量)。

默認情況下,只有upload-pack服務已啟用,供應git fetch-packgit ls-remote客戶,這是從調用git fetch,git pullgit clone。如果客戶端已通過身份驗證,receive-pack則會啟用該服務,該服務將為git send-pack客戶端提供服務,并從中調用該服務git push。

服務

可以使用每個存儲庫配置文件啟用/禁用這些服務:

http.getanyfile

這為不能使用上傳包服務的版本低于1.6.6的 Git 客戶端提供服務。啟用時,客戶端可以讀取存儲庫中的任何文件,包括不再從分支中訪問但仍存在的對象。它是默認啟用的,但是一個存儲庫可以通過設置這個配置項來禁用它false。

http.uploadpack

這服務git fetch-packgit ls-remote客戶。它是默認啟用的,但是一個存儲庫可以通過設置這個配置項來禁用它false。

http.receivepack

這為git send-pack客戶提供服務,從而推動。默認情況下,它對于匿名用戶是禁用的,并且默認情況下為 Web 服務器驗證的用戶啟用。可以通過將該項目設置為false或禁用所有用戶(包括匿名用戶),將其設置為true。

網(wǎng)址翻譯

要確定存儲庫在磁盤上的位置,需要git http-backend連接由 Web 服務器自動設置的環(huán)境變量 PATH_INFO 和必須在 Web 服務器配置中手動設置的 GIT_PROJECT_ROOT。如果未設置 GIT_PROJECT_ROOT,則git http-backend讀取 PATH_TRANSLATED,它也由 Web 服務器自動設置。

示例

以下所有示例都映射http://$hostname/git/foo/bar.git/var/www/git/foo/bar.git。

Apache 2.x

確保已啟用mod_cgi,mod_alias 和 mod_env,并正確設置 GIT_PROJECT_ROOT(或DocumentRoot),并為 CGI 創(chuàng)建一個 ScriptAlias:

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

要啟用匿名讀取訪問但授權寫入訪問,需要授權初始引用廣告(我們通過查詢字符串中的服務參數(shù)檢測為推送)以及接收包調用本身:

RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]RewriteCond %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=AUTHREQUIRED:yes]<LocationMatch "^/git/">
        Order Deny,Allow
        Deny from env=AUTHREQUIRED

        AuthType Basic
        AuthName "Git Access"
        Require group committers
        Satisfy Any        ...</LocationMatch>

如果您沒有mod_rewrite可用于匹配查詢字符串,則僅保護git-receive-pack自己就足夠了,如:

<LocationMatch "^/git/.*/git-receive-pack$">
        AuthType Basic
        AuthName "Git Access"
        Require group committers        ...</LocationMatch>

在這種模式下,服務器將不會請求認證,直到客戶端實際啟動推送的對象協(xié)商階段,而不是在初始聯(lián)系期間。出于這個原因,您還必須http.receivepack在任何應該接受推送的存儲庫中啟用配置選項。默認行為如果http.receivepack未設置,則拒絕未經(jīng)身份驗證的用戶進行的任何推送; 因此最初的請求會403 Forbidden向客戶報告,甚至沒有提供認證的機會。

要對讀取和寫入進行身份驗證,請在存儲庫或其父目錄之一使用 Location 指令:

<Location /git/private>
        AuthType Basic
        AuthName "Private Git Access"
        Require group committers        ...</Location>

要在相同的 url 上提供 gitweb,請使用 ScriptAliasMatch 僅git http-backend處理那些可以處理的 URL ,然后將其余的轉發(fā)到 gitweb:

ScriptAliasMatch \        "(?x)^/git/(.*/(HEAD | \
                        info/refs | \
                        objects/(info/[^/]+ | \
                                 [0-9a-f]{2}/[0-9a-f]{38} | \
                                 pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                        git-(upload|receive)-pack))$" \        /usr/libexec/git-core/git-http-backend/$1ScriptAlias /git/ /var/www/cgi-bin/gitweb.cgi/

要在單個存儲庫中提供來自不同 gitnamespaces [7]的多個存儲庫:

SetEnvIf Request_URI "^/git/([^/]*)" GIT_NAMESPACE=$1ScriptAliasMatch ^/git/[^/]*(.*) /usr/libexec/git-core/git-http-backend/storage.git$1

Accelerated static Apache 2.x

與上面類似,但 Apache 可用于返回存儲在磁盤上的靜態(tài)文件。在許多系統(tǒng)上,這可能更有效,因為 Apache 可以要求內核將文件內容從文件系統(tǒng)直接復制到網(wǎng)絡:

SetEnv GIT_PROJECT_ROOT /var/www/git

AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /var/www/git/$1AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

這可以與 gitweb 配置結合使用:

SetEnv GIT_PROJECT_ROOT /var/www/git

AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /var/www/git/$1AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1ScriptAliasMatch \        "(?x)^/git/(.*/(HEAD | \
                        info/refs | \
                        objects/info/[^/]+ | \
                        git-(upload|receive)-pack))$" \        /usr/libexec/git-core/git-http-backend/$1ScriptAlias /git/ /var/www/cgi-bin/gitweb.cgi/

Lighttpd

確保mod_cgi,mod_alias,mod_auth,mod_setenv加載,然后設置GIT_PROJECT_ROOT適當?shù)暮椭囟ㄏ虻?CGI 的所有請求:

alias.url += ( "/git" => "/usr/lib/git-core/git-http-backend" )$HTTP["url"] =~ "^/git" {
        cgi.assign = ("" => "")
        setenv.add-environment = (                "GIT_PROJECT_ROOT" => "/var/www/git",                "GIT_HTTP_EXPORT_ALL" => ""        )}

要啟用匿名讀取訪問但驗證寫入訪問:

$HTTP["querystring"] =~ "service=git-receive-pack" {
        include "git-auth.conf"}$HTTP["url"] =~ "^/git/.*/git-receive-pack$" {
        include "git-auth.conf"}

git-auth.conf某些地方看起來類似:

auth.require = (        "/" => (                "method" => "basic",                "realm" => "Git Access",                "require" => "valid-user"               ))# ...and set up auth.backend here

要求讀取和寫入驗證:

$HTTP["url"] =~ "^/git/private" {
        include "git-auth.conf"}

環(huán)境

git http-backend依賴于CGI調用 Web 服務器設置的環(huán)境變量,包括:

  • PATH_INFO (if GIT_PROJECT_ROOT is set, otherwise PATH_TRANSLATED)

  • REMOTE_USER

  • REMOTE_ADDR

  • CONTENT_TYPE

  • QUERY_STRING

  • REQUEST_METHOD

在允許導出該存儲庫之前,可以將GIT_HTTP_EXPORT_ALL環(huán)境變量傳遞給git-http-backend繞過每個存儲庫中“git-daemon-export-ok”文件的檢查。

GIT_HTTP_MAX_REQUEST_BUFFER環(huán)境變量(或http.maxRequestBuffer配置變量)可以被設置為改變最大 REF 協(xié)商請求中取回 git 會處理; 任何需要較大緩沖區(qū)的獲取都不會成功。通常不需要更改此值,但是如果從具有極大數(shù)量的引用的存儲庫中提取,可能會有所幫助。該值可以用單位指定(例如,100M代表100兆字節(jié))。默認值是10兆字節(jié)。

后端進程將 GIT_COMMITTER_NAME 設置為,$REMOTE_USER和將GIT_COMMITTER_EMAIL 設置為,以${REMOTE_USER}@http.${REMOTE_ADDR}確保git-receive-pack創(chuàng)建的任何reflog 包含執(zhí)行推送的遠程用戶的一些標識信息。

所有的CGI環(huán)境變量都可用于每個被git-receive-pack調用的鉤子。

Vorheriger Artikel: N?chster Artikel: