Django:获取当前项目的git修订号

时间:2011-10-09 12:08:41

标签: django git revision

对于我的django项目,我需要阅读为项目提供支持的项目的当前git修订版号,假设该项目是git存储库的根目录。

这样我将保持我的css和js页面始终是最新的:

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

其中46是修订号。

4 个答案:

答案 0 :(得分:2)

好的,抱歉没有回答您的问题,但您可能需要注意以下几点:

  1. Git没有修订号(好吧,也许确实如此。阅读下面的评论)
  2. 如果这样做,即使您对单个不相关的文件进行了微小的更改,您的站点也会刷新它的缓存(例如,某些数据库逻辑,与向客户端提供的实际.css文件完全无关)< / LI>
  3. 这使得糟糕的想法。
  4. 但是,您可以将last-modified文件系统属性用于相同的(os.path.getmtime("path.to.file")

答案 1 :(得分:1)

您可能希望查看为您解决此问题的项目,例如django-mediagenerator: http://www.allbuttonspressed.com/projects/django-mediagenerator

无需重新发明轮子;)

答案 2 :(得分:0)

  1. 我认为,您不想在参数中使用tip changeset ID,请参阅@ aviral-dasgupta answer的注释2,但是最后更改此文件更改集的ID,以便仅在文件更改时重新缓存< / LI>
  2. Git中的变更集ID是长40位十六进制哈希,很难被人类
  3. 引用
  4. Git本身不支持RCS风格的关键字扩展。
  5. 如果您仍然需要,请阅读@ jakub-narebski中的full answer on similar questionPro Git reading也可以帮助理解(使用$ Date $关键字构建过滤器的好例子)

答案 3 :(得分:0)

我通过在我的django项目中添加一个templatetag来解决这个问题:

在proj / 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文件。