最近在搭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之間...