monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] auto updates


From: Brian May
Subject: Re: [Monotone-devel] auto updates
Date: Sat, 21 Oct 2006 10:20:47 +1000
User-agent: Gnus/5.110006 (No Gnus v0.6) XEmacs/21.4.19 (linux)

>>>>> "Brian" == Brian May <address@hidden> writes:

    Brian> address@hidden:~/tree/config$ cat ~/bin/update
    Brian> #!/bin/sh -e

    Brian> cd "$1"

    Brian> heads=`mtn automate heads "$2" | wc --lines`
    Brian> if [ "$heads" -gt 1 ]
    Brian> then
    Brian> echo "Too many heads" >&2
    Brian> exit 0;
    Brian> fi

    Brian> diff=`mtn diff | wc --lines`
    Brian> if [ "$diff" -gt 3 ]
    Brian> then
    Brian> echo "Local changes made" >&2
    Brian> exit 0;
    Brian> fi

    Brian> mtn update --branch="$2"
    Brian> address@hidden:~/tree/config$ ~/bin/update $PWD 
au.com.microcomaustralia.brian.config
    Brian> mtn: updating along branch 'au.com.microcomaustralia.brian.config'
    Brian> mtn: already up to date at 8bd00cf9a82b9f0bd52988666cb65e5f950e6854

Here is the corresponding ~/.monotone/monotonerc file - adapted from
/usr/share/doc/monotone/examples/display_branches.lua in Debian - it
appears to work - so far:

netsync_branches = {}
function note_netsync_start(nonce)
   netsync_branches[nonce] = {}
end

function _note_netsync_cert_received(rev_id,key,name,value,nonce)
   if name == "branch" then
      if netsync_branches[nonce][value] == nil then
         netsync_branches[nonce][value] = 1
      else
         netsync_branches[nonce][value] = netsync_branches[nonce][value] + 1
      end
   end
end

function note_netsync_revision_received(new_id,revision,certs,nonce)
   for _, item in pairs(certs)
   do
      _note_netsync_cert_received(new_id,item.key,item.name,item.value,nonce)
   end
end

function note_netsync_cert_received(rev_id,key,name,value,nonce)
   _note_netsync_cert_received(rev_id,key,name,value,nonce)
end

function note_netsync_end(nonce)
   for item, amount in pairs(netsync_branches[nonce])
   do
        if item == "au.com.microcomaustralia.brian.config" then
                io.stderr:write("\nUpdating workspace for ",item,"...\n")
                execute("/home/bam/bin/update","/home/bam/tree/config",item)
                io.stderr:write("...done\n")
        end
   end
   netsync_branches[nonce] = nil
end
-- 
Brian May <address@hidden>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]