Permalink
Browse files

Merge branch 'master' of github.com:rtv/Stage

  • Loading branch information...
2 parents e008aea + 13e03ee commit bc53b2faa2ac664f29931e2eb1cda62590ddb0e3 @rtv committed Jan 13, 2012
View
@@ -3,4 +3,5 @@ config.h
*.swp
*~
*#
-.DS_Store
+.DS_Store
+docsrc/stage
View
@@ -2,7 +2,7 @@ PROJECT(Stage)
SET( V_MAJOR 4 )
SET( V_MINOR 1 )
-SET( V_BUGFIX dev )
+SET( V_BUGFIX 1 )
SET( VERSION ${V_MAJOR}.${V_MINOR}.${V_BUGFIX} )
SET( APIVERSION ${V_MAJOR}.${V_MINOR} )
View
@@ -1,3 +1,14 @@
+Stage INSTALL.txt
+=================
+
+These are the Stage installation instructions, both quick and longer
+versions. They are intended for experienced programmers. This is not a
+tutorial.
+
+For release notes see RELEASE.txt
+For introduction and license see README.txt
+
+
Quick start: Build Stage from RTV's Github
------------------------------------------
View
@@ -1,3 +1,11 @@
+Stage README.txt
+================
+
+This is the Stage README file, containing an introduction, license and
+citation information.
+
+For release notes see RELEASE.txt
+For installation notes see INSTALL.txt
Copyright Richard Vaughan and contributors 1998-2011
Part of the Player Project (http://playerstage.org)
View
@@ -1,28 +1,39 @@
-Version 4.1.0
+Stage RELEASE.txt
+==================
+
+These are the Stage release notes.
+
+For introduction and license see README.txt
+For installation notes see INSTALL.txt
+
+
+Version 4.1.1
-------------
-- many bugfixes
+* fixed bugs in libstageplugin/p_ranger.cc that prevented the plugin from building
+* updated some docs
-- support for basic dynamics: position models simulate acceleration
- and have a new acceleration control mode.
+Richard Vaughan (rtv) vaughan@sfu.ca - 2012.1.11
-- visualization options can be loaded from and saved to worldfiles
-- API change: new World::Run() methed provides the same interface to
+Version 4.1.0
+-------------
+* many bugfixes
+* support for basic dynamics: position models simulate acceleration
+ and have a new acceleration control mode.
+* visualization options can be loaded from and saved to worldfiles
+* API change: new World::Run() methed provides the same interface to
GUI and non-GUI worlds (by chmp@github)
-
-- saved screenshots are numbered with leading zeros for convenience
+* saved screenshots are numbered with leading zeros for convenience
when using movie-making tools (by mani-monaj@github)
-
-- major performance enhancement: position updates now run in parallel
+* major performance enhancement: position updates now run in parallel
with sensor updates, using a double-buffer-style alternating pair of
occupancy grids
-
-- several minor performance enhancements
-
-- much faster debug visualization (occupancy grid and voxel views)
+* several minor performance enhancements
+* much faster debug visualization (occupancy grid and voxel views)
+* build scripts are more portable
-Richard Vaughan (rtv) vaughan@sfu.ca - XX TODO
+Richard Vaughan (rtv) vaughan@sfu.ca - 2011.12.28
Version 4.0.1
-------------
View
@@ -28,4 +28,4 @@ clean:
# copy the latest docs to the web server
upload:
- ghp-import -p stage
+ ./ghp-import -p stage
View
@@ -1,10 +0,0 @@
-
-<hr size="1"><address style="align:right;"><small>Generated on Thu Aug 11 13:08:10 2005 for Stage by&nbsp;
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.0 </small></address>
-
-</div>
-
-
-</body>
-</HTML>
View
@@ -0,0 +1,137 @@
+#! /usr/bin/env python
+#
+# This file is part of the ghp-import package released under
+# the Tumbolia Public License. See the LICENSE file for more
+# information.
+
+import optparse as op
+import os
+import subprocess as sp
+import time
+
+__usage__ = "%prog [OPTIONS] DIRECTORY"
+
+def is_repo(d):
+ if not os.path.isdir(d):
+ return False
+ if not os.path.isdir(os.path.join(d, 'objects')):
+ return False
+ if not os.path.isdir(os.path.join(d, 'refs')):
+ return False
+
+ headref = os.path.join(d, 'HEAD')
+ if os.path.isfile(headref):
+ return True
+ if os.path.islinke(headref) and os.readlink(headref).startswith("refs"):
+ return True
+ return False
+
+def find_repo(path):
+ if is_repo(path):
+ return True
+ if is_repo(os.path.join(path, '.git')):
+ return True
+ (parent, ignore) = os.path.split(path)
+ if parent == path:
+ return False
+ return find_repo(parent)
+
+def try_rebase(remote):
+ cmd = ['git', 'rev-list', '--max-count=1', 'origin/gh-pages']
+ p = sp.Popen(cmd, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
+ (rev, ignore) = p.communicate()
+ if p.wait() != 0:
+ return True
+ cmd = ['git', 'update-ref', 'refs/heads/gh-pages', rev.strip()]
+ if sp.call(cmd) != 0:
+ return False
+ return True
+
+def get_config(key):
+ p = sp.Popen(['git', 'config', key], stdin=sp.PIPE, stdout=sp.PIPE)
+ (value, stderr) = p.communicate()
+ return value.strip()
+
+def get_prev_commit():
+ cmd = ['git', 'rev-list', '--max-count=1', 'gh-pages']
+ p = sp.Popen(cmd, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE)
+ (rev, ignore) = p.communicate()
+ if p.wait() != 0:
+ return None
+ return rev.strip()
+
+def make_when(timestamp=None):
+ if timestamp is None:
+ timestamp = int(time.time())
+ currtz = "%+05d" % (time.timezone / 36) # / 3600 * 100
+ return "%s %s" % (timestamp, currtz)
+
+def start_commit(pipe, message):
+ username = get_config("user.name")
+ email = get_config("user.email")
+ pipe.stdin.write('commit refs/heads/gh-pages\n')
+ pipe.stdin.write('committer %s <%s> %s\n' % (username, email, make_when()))
+ pipe.stdin.write('data %d\n%s\n' % (len(message), message))
+ head = get_prev_commit()
+ if head:
+ pipe.stdin.write('from %s\n' % head)
+ pipe.stdin.write('deleteall\n')
+
+def add_file(pipe, srcpath, tgtpath):
+ pipe.stdin.write('M 100644 inline %s\n' % tgtpath)
+ with open(srcpath) as handle:
+ data = handle.read()
+ pipe.stdin.write('data %d\n' % len(data))
+ pipe.stdin.write(data)
+ pipe.stdin.write('\n')
+
+def run_import(srcdir, message):
+ cmd = ['git', 'fast-import', '--date-format=raw', '--quiet']
+ pipe = sp.Popen(cmd, stdin=sp.PIPE)
+ start_commit(pipe, message)
+ for path, dnames, fnames in os.walk(srcdir):
+ for fn in fnames:
+ fpath = os.path.join(path, fn)
+ add_file(pipe, fpath, os.path.relpath(fpath, start=srcdir))
+ pipe.stdin.write('\n')
+ pipe.stdin.close()
+ if pipe.wait() != 0:
+ print "Failed to process commit."
+
+def options():
+ return [
+ op.make_option('-m', dest='mesg', default='Update documentation',
+ help='The commit message to use on the gh-pages branch.'),
+ op.make_option('-p', dest='push', default=False, action='store_true',
+ help='Push the branch to origin/gh-pages after committing.'),
+ op.make_option('-r', dest='remote', default='origin',
+ help='The name of the remote to push to. [%default]')
+ ]
+
+def main():
+ parser = op.OptionParser(usage=__usage__, option_list=options())
+ opts, args = parser.parse_args()
+
+ if len(args) == 0:
+ parser.error("No import directory specified.")
+
+ if len(args) > 1:
+ parser.error("Unknown arguments specified: %s" % ', '.join(args[1:]))
+
+ if not os.path.isdir(args[0]):
+ parser.error("Not a directory: %s" % args[0])
+
+ if not find_repo(os.getcwd()):
+ parser.error("No Git repository found.")
+
+ if not try_rebase(opts.remote):
+ parser.error("Failed to rebase gh-pages branch.")
+
+ run_import(args[0], opts.mesg)
+
+ if opts.push:
+ sp.check_call(['git', 'push', opts.remote, 'gh-pages'])
+
+if __name__ == '__main__':
+ main()
+
View
@@ -13,7 +13,7 @@
<style type="text/css">
-.floatright { float: right; margin: 0 0 1em 1em; }
+#.floatright { float: right; margin: 0 0 1em 1em; }
body {
font-family: sans-serif;
@@ -100,43 +100,16 @@ <h2 style="text-align:center;">
</h2>
<div class="box">
-<div class=title>Stage</div>
+<div class=title>User</div>
<ul class=menu>
<li class=menu><a href="index.html">Frontpage</a>
<li class=menu><a href="release.html">Release</a>
<li class=menu><a href="authors.html">Authors</a>
-<li class=menu><a href="modules.html">Contents</a>
-</div>
-
-
-<div class="box">
-<div class=title>User</div>
-<ul class=menu>
<li class=menu><a href="install.html">Installation</a>
-<li class=menu><a href="help.html">Help</a>
-<hr>
-<!-- the lists of plugins and models come next -->
-
-<li class=menu><a href="group__world.html">World</a>
-<li class=menu><a href="group__worldgui.html">WorldGUI</a>
-<li class=menu><a href="group__model.html">Model</a>
-<ul class=menu1>
-<li class=menu><a href="group__model__actuator.html">actuator</a></li>
-<li class=menu><a href="group__model__blobfinder.html">blobfinder</a></li>
-<li class=menu><a href="group__model__camera.html">camera</a></li>
-<li class=menu><a href="group__model__fiducial.html">fiducial</a></li>
-<li class=menu><a href="group__model__gripper.html">gripper</a></li>
-<li class=menu><a href="group__model__laser.html">laser</a></li>
-<li class=menu><a href="group__model__position.html">position</a></li>
-<li class=menu><a href="group__model__ranger.html">ranger</a></li>
-<!--
-TODO
-
-<li class=menu><a href="group__model__bumper.html">bumper</a></li>
-<li class=menu><a href="group__model__blinkenlight.html">blinkenlight</a></li>
--->
+<hr>
+<li class=menu><a href="modules.html">Contents</a>
</ul>
</div>
@@ -155,15 +128,20 @@ <h2 style="text-align:center;">
<div class=box_light>
<!-- <a href="http://sourceforge.net"><img border=0 src="http://sourceforge.net/sflogo.php?group_id=42445&type=1"></a> -->
<div class="title">Online</div>
-<a href="http://playerstage.org">Homepage</a><br>
-<a href="http://playerstage.sourceforge.net/wiki/Basic_FAQ">FAQ (Wiki)</a><br>
-<a href="http://sourceforge.net/project/showfiles.php?group_id=42445">Download</a><br>
-<a href="http://sourceforge.net/projects/playerstage">Project</a><br>
-<a href="http://sourceforge.net/tracker/?group_id=42445">Bugs</a><br>
+
+
+<a href="https://github.com/rtv/Stage">GitHub</a>
+<a href="https://github.com/rtv/Stage/issues">Bugs/Issues</a>
+<hr>
+<a href="http://playerstage.org">Player Project</a><br>
<a href="http://sourceforge.net/mail/?group_id=42445">Mailing Lists</a>
+
</div>
</div>
<div id="content" >
+
+<div>
+
Oops, something went wrong.

0 comments on commit bc53b2f

Please sign in to comment.