Django: получить номер редакции git текущего проекта - PullRequest
0 голосов
/ 09 октября 2011

Для моего проекта django мне нужно прочитать текущий номер редакции git моего проекта, который обеспечивает работу сайта, предполагая, что проект является корневым каталогом репозитория git.

Таким образом, я буду хранить своиСтраницы CSS и JS всегда обновляются как таковые:

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

Где 46 - номер редакции.

Ответы [ 4 ]

2 голосов
/ 09 октября 2011

Хорошо, извините, что не ответил на ваш вопрос, но есть пара моментов, которые вы могли бы отметить:

  1. Git не имеет номеров ревизий (хорошо, возможно, это так. Прочитайте комментарии ниже)
  2. Если вы сделаете это, ваш сайт обновит свой кэш, даже если вы внесете незначительное изменение в один несвязанный файл (например, некоторую логику базы данных, полностьюне имеет отношения к фактическому .css файлу, разосланному клиентам)
  3. , что делает его плохой идеей.
  4. Однако вы можете использовать свойство файловой системы last-modified длято же самое (os.path.getmtime("path.to.file"))
1 голос
/ 09 октября 2011

Возможно, вы захотите изучить проекты, которые позаботятся об этой проблеме, например, django-mediagenerator: http://www.allbuttonspressed.com/projects/django-mediagenerator

Не нужно изобретать велосипед;)

0 голосов
/ 10 мая 2014

Я решил это, добавив тег шаблона в свой проект django:

в 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>

Вы можете настроить его для использования номера версии, если вы выбираете на основе даты / времени, а затем добавить к своим файлам стилей / js.

0 голосов
/ 10 октября 2011
  1. Я думаю, вы не хотите использовать ID смены наконечника в параметре, см. Примечание 2 к ответу @ aviral-dasgupta, но идентификатор смены last-change-this-file для того, чтобы восстановить кеш только при изменении файла
  2. Идентификатор набора изменений в Git - это длинный 40-значный шестнадцатеричный хеш, вряд ли читаемый человеком
  3. Git изначально не поддерживает расширение ключевых слов в стиле RCS.
  4. Если вы все еще хотите это, прочитайте полный ответ на аналогичный вопрос от @ jakub-narebski. чтение Pro Git также может помочь понять (с хорошим примером использования фильтров для построения ключевого слова $ Date $)
...