]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/forum/How_does_ikiwiki_remember_times__63__.mdwn
Add some more reasoning. Split out unrelated issue.
[ikiwiki.git] / doc / forum / How_does_ikiwiki_remember_times__63__.mdwn
index f199b0f3b0004e8f57faeb11c35dd24aba45b668..6ce576db118cb1153c43cce898e3ec524aeb8b02 100644 (file)
@@ -49,3 +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]]