2009-04-30 64 views
1

我的問題是:我不想在文件「A」中顯示文件「B」的最新版本號。Subversion跨文件關鍵字替換

顛覆了一個有特色的名爲 「Keyword Substitution」。當您提交文件內容時,它會使用實際值替換關鍵字。

但有可能在一個文件中添加關鍵字,它會涉及到其他文件中的值來取代?如果不是的話,上面我的原始問題狀態的解決方案是什麼?

我想傑夫·阿特伍德這樣做,這裏在StackOverflow的站點。如果我還記得,他甚至在之前的播客中評論過它。

<script type="text/javascript" src="/content/js/master.js?v=3067"></script> 

「v = 3067」似乎是「master.js」的最新修訂版本號。傑夫,你能幫我一下嗎? :)

回答

1

嗯,這個數字可能是兩件事情之一:

  1. 網站的資料庫中HEAD的版本號
  2. 最後更改爲特定文件
的版本號

無論在哪種情況下,它都有一個特定的目的,以確保當用戶獲取帶有CSS或JavaScript文件引用的網頁時,使用這樣的版本號,如果版本號自上次更改用戶訪問了相同的頁面,Web瀏覽器將會保留l忽略該文件的本地緩存,並重新下載它。

除非你想要鎖定該引用到舊的,工作,版本,我會說,你可以只用HEAD版本號更新。這將是「安全的」,因爲它會給你想要的東西,但可能會浪費帶寬,因爲它會強制重新下載一個可能或可能沒有改變的文件。

如果你真的需要其他文件的版本號,該鏈接,然後我會說,你應該推出一個小程序,自定義關鍵字系統,並分析日誌文件自己的解決方案。

舉例來說,你可以這樣做:

rc="/content/js/master.js?v=#Rev(master.js)#" 

,並有一個正則表達式,看起來這個:

#Rev\((?<filename>[^)])\)# 

,然後你就必須讀從Subversion日誌文件,你可以用XML輸出。