2011-10-09 56 views
0

對於我的django項目,我需要閱讀我的項目的當前git修訂版本號,該項目支持站點,假設項目是git存儲庫的根目錄。Django:獲取當前項目的git修訂號

這樣,我會保持我的CSS和JS頁面總是最新的,例如:

<link rel="stylesheet" type="text/css" href="/media/css/app.css?v46"> 

其中46爲版本號。

回答

2

好了,對不起,不回答問題,但也有幾個百分點,你可能要注意:

  1. Git不會有版本號(好吧,也許它讀取下面的評論)
  2. 如果你這樣做,你的網站就會刷新它的緩存中,即使您在一個不相關文件的微小變化(例如某些數據庫邏輯,完全不相干的實際.css文件提供給客戶端)
  3. 這使得它成爲不好的的想法。
  4. 您可以但是使用相同(os.path.getmtime("path.to.file")
+0

+1,儘管我需要指出git * does *有修訂號,但是,它們不是順序的。它們對人類來說也很不方便,因爲它們是十六進制的大字符串。 – Arafangion

+0

@Arafangion他們不是完全修訂*數字*是他們嗎?;) – aviraldg

+3

我要讓你完成,但十六進制字符串是數字,他們只是有一個不同的基礎(16)

0
  1. 我想,你不想在參數使用提示變更ID,看到@ aviral - 達斯古普塔答案注2,但IDØ爲了resresh只有當文件在Git的改變
  2. 變更集ID緩存˚F最後變化這個文件變更爲長40位十六進制哈希值,由人類
  3. 的Git幾乎readed沒有原生的RCS-支持樣式關鍵字擴展。
  4. 如果你還想要它,請閱讀@ jakub-narebski的full answer on similar questionPro Git reading可以幫助也明白(使用過濾器$日期$關鍵字構建的很好的例子)
0

我加入了templatetag到我的Django項目解決了這個:

在凸出/ templatetags

,加入version.py :

from django import template 
import time 
import os 

register = template.Library() 

@register.simple_tag 
def version_date(): 
    return time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime('../.git'))) 

然後,在我的base.html文件,並補充說:

{% load version %} 
<span class='version'>Last Updated: {% version_date %}</span> 

你可以調整它使用版本號如果你選擇基於日期/時間,然後追加到你的stylesheets/js文件。