Gitweb原始碼解析

2021-09-08 08:58:07 字數 2332 閱讀 2519

最近在搭git server,git提供了乙個簡單但強大的網頁端gitweb供使用者瀏覽專案 因為需要新增一項小功能,所以把gitweb的**研究了一下,下面和大家一起分享一下... 這裡,我們有一點前置知識:

perl : gitweb是用perl寫的,所以,在看gitweb源**前,請熟悉一下perl的語法...

對於這一點,請一定得做,因為,憑著以往的程式設計經驗可以使你能看懂,但是會非常痛苦。perl追求的是「道路不止一條」,而且,語法非常奇怪,以及有非常多的預設變數,不懂語法就看gitweb,會讓你發狂。 但是,了解了perl以後,再看,會讓你豁然開朗...

正規表示式

正規表示式在很多地方都有用,所以,先預習一下非常有好處。還有就是,perl在處理字串尤為強大,就是其正規表示式匹配使用得非常多,所以,必須熟悉正規表示式...在perl的書籍裡面會專門有正規表示式一章,所以直接看perl即可

git

gitweb為git服務,所以,對git的命令熟悉會使我們做任何我們想要git做的事

gitweb裡面最多的就是對git輸出的字串的解析,所以看懂正規表示式是必需的,當然,如果我們只想新增功能其實還是很簡單的。 gitweb裡面提供了乙個全域性的字串函式對映表,這樣我們就可以通過前端傳入需要操作的函式進行相應操作

1

#we will also need to know the possible actions, for validation

2our

%actions =(3"

blame

" => \&git_blame,4"

blame_incremental

" => \&git_blame_incremental,5"

blame_data

" => \&git_blame_data,6"

blobdiff

" => \&git_blobdiff,7"

blobdiff_plain

" => \&git_blobdiff_plain,8"

blob

" => \&git_blob,9"

blob_plain

" => \&git_blob_plain,10"

commitdiff

" => \&git_commitdiff,11"

commitdiff_plain

" => \&git_commitdiff_plain,12"

commit

" => \&git_commit,13"

forks

" => \&git_forks,14"

heads

" => \&git_heads,15"

history

" => \&git_history,16"

log" => \&git_log,17#

fei add 18"

dl_patch

" => \&git_dl_patch,19"

show_patch_xml

" => \&git_write_xml_file,20#

end fei add 21"

patch

" => \&git_patch,22"

patches

" => \&git_patches,23"

remotes

" => \&git_remotes,24"

rss" => \&git_rss,25"

atom

" => \&git_atom,26"

search

" => \&git_search,27"

search_help

" => \&git_search_help,28"

shortlog

" => \&git_shortlog,29"

summary

" => \&git_summary,30"

tag" => \&git_tag,

31"br# \&git_tags,32"

tree

" => \&git_tree,33"

snapshot

" => \&git_snapshot,34"

object

" => \&git_object,35#

those below don't need $project36"

opml

" => \&git_opml,37"

project_list

" => \&git_project_list,38"

project_index

" => \&git_project_index,

39 );

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...

Integer原始碼解析

public class test else integer i3 200 integer i4 200 if i3 i4 else 結果為 原因integer 類會快取 128 到 127 之間的整數 但是如果new interger的話就是不同的物件了 源 分析 如果是在 128到正的127之間...