X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/597009e8bc3c2359045614f273f065a5de942a04..84f606b6fe5a9252a1cc515b083856e3b9a3c455:/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn diff --git a/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn b/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn index 067aa0c09..6ce576db1 100644 --- a/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn +++ b/doc/forum/How_does_ikiwiki_remember_times__63__.mdwn @@ -49,7 +49,61 @@ Do I have it right? > > Surely it is not the _last changed time_ but the _first seen time_ of each page that is pulled out of the VCS? > > If the aim is to get the real creation times of items in weblogs, then the last times that the items were > > changed in the VCS is not going to help. -- [[seanh]] +>>> Typo, fixed. --[[Joey]] > > > If you want to preserve the date of a page, the best way to do it is to > > > use [[ikiwiki/directive/meta]] date="foo". This will survive checkouts, > > > VCS migrations, etc. -- [[Jon]] +> > > +> > > > That's a good tip Jon. That would also survive renaming a page by renaming its mdwn file, which would +> > > > normally lose the times also. (And in that case I think both times are irretrievable, even by +> > > > `--getctime`). I might start using a simple script to make blog posts that creates a file for +> > > > me, puts today's date in the file as a meta, and opens the file in my editor. -- [[seanh]] + +>>>>> I use a script that does that and also sets up templates and tags +>>>>> for a new item: + + #!/bin/sh + set -u + set -e + + if [ $# -ne 1 ]; then + echo usage: $0 pagename >&2 + exit 1 + fi + + pagename="$1" + + if [ -e "$pagename" ]; then + echo error: "$pagename" exists >&2 + exit 1 + fi + + date=$(date) + echo '\[[!template id=draft]]' >> "$pagename" + echo "\[[!meta date=\"$date\"]]" >> "$pagename" + echo "\[[!tag draft]]" >> "$pagename" + git add "$pagename" + $EDITOR "$pagename" + +>>>>> -- [[Jon]] + +> A quick workaround for me to get modification times right is the following +> little zsh script, which unfortunately only works for git: + + #!/usr/bin/env zsh + + set +x + + for FILE in **/*(.); do + TIMES="`git log --pretty=format:%ai $FILE`" + MTIME="`echo $TIMES | head -n1`" + + if [ ! -z $MTIME ]; then + echo touch -m -d "$MTIME" $FILE + touch -m -d "$MTIME" $FILE + fi + + done + +> --[[David_Riebenbauer]]