French ↓ Menu ↓

# Use git to calculate trusted mtimes

You can remark at the bottom of each page I provide a last modification date. This label was first calculated using the `mtime` of the file on the file system. But many times I modify this date just to force some recompilation. Therefore the date wasn’t a date of real modification.

I use git to version my website. And fortunately I can know the last date of real change of a file. This is how I do this with nanoc:

    def gitmtime
        filepath=@item.path.sub('/Scratch/','content/html/').sub(/\/$/,'')
        ext=%{.#{@item[:extension]}}
        filepath<<=ext
        if not FileTest.exists?(filepath)
            filepath.sub!(ext,%{#{@item.raw_filename}#{ext}})
        end
        str=`git log -1 --format='%ci' -- #{filepath}`
        if str.nil? or str.empty?
            return Time.now
        else
            return DateTime.parse( str )
        end
    end

Of course I know it is really slow and absolutely not optimized. But it works as expected. Now the date you see at the bottom is exactly the date I modified the content of the page.

Edit: Thanks to Eric Sunshine and Kris to provide me some hints at cleaning my code.

RSS · Tweet · FB
These social sharing links preserve your privacy
↑ Top ↑
Published on 2010-09-02
Follow @yogsototh
Yann Esposito©
Done with Vim spacemacs & nanoc Hakyll

ADA: `DdzFFzCqrhtAvdkmATx5Fm8NPJViDy85ZBw13p4XcNzVzvQg8e3vWLXq23JQWFxPEXK6Kvhaxxe7oJt4VMYHxpA2vtCFiP8fziohN6Yp`