Table of Contents

1. Top-Level Directories

The root svn repository is located at http://bigbird.comp.nus.edu.sg/motion/. It is further sub-divided into 2 other directories, namely, "proj" and "paper".

1.1. Project

The directory "proj" will be used to house code developments. Each code development will be an individual repository so that we can keep track of its revision number. For example the project appl can be checked out at, http://bigbird.comp.nus.edu.sg/motion/proj/appl and the momdp code can be checked out at, http://bigbird.comp.nus.edu.sg/motion/proj/momdp.

And if one were to ssh into bigbird, the different projects can found as individual folders by the names "appl" and "momdp" at /home/motion/proj. This is the mapping that apache dav has for the svn repositories.

Below are brief descriptions of contents of the proj/ directory.

1.1.1. amdp

1.1.2. appl

Code for Appl.

Releases:

Release 0.1, 15-Apr-2008.

Release 0.2, 17-Jul-2008.

Release 0.3, 15-Feb-2009.

1.1.3. appl2

Code for Appl, merged from code in proj/appl and proj/momdp.

Releases:

Release 0.91, 18-Dec-2009.

1.1.4. dearth

1.1.5. factoredrock

1.1.6. koksung_code

This contains the developmental scripts to generate the tennis.pomdpx files. GRP paper is also subversioned here.

1.1.7. momdp

Code for factored solver based on Appl code.

The code here (proj/momdp) has been merged with the code in proj/appl, to get the code in proj/appl2.

1.1.8. pomdpxFileFormat

General contents:

documentation/ : Initial .pdf file documenting the pomdpx file format. The online (pmwiki) documentation is based on this initial version. All files used to generate the .pdf file are included here. The contents in this directory are no longer maintained. Documentation of the pomdpx file format is now maintained on pmwiki.

examples/ : small example files conforming to the pomdpx file format.

xsd/ : pomdpx.xsd is the xml schema for the pomdpx file format.

Tagged versions:

- proj/pomdpxFileFormat/tags/version-1.0/ contains the pomdpx.xsd file included in Appl Release 0.91, 18-Dec-2009.

1.1.9. problemExamples

Example POMDP problems, in both pomdp and pomdpx file formats. This includes POMDP problems which have appeared in our published papers (refer to problemExamples/trunk/README-DIRECTORYGUIDE.txt for their locations). Generator and visualizer files are included where available.

1.1.10. storytelling

Shaowei's code for storytelling using POMDP

1.1.11. pomdpxParserTestsuite

Test suite for PomdpX parser in APPL. Migrated from http://bigbird.comp.nus.edu.sg/motion/proj/momdp/branches/testsuite/.

1.2. Paper

The directory "paper" is setup slightly different from "proj", in that there is only one repository, named trunk. Under this repository, it will house multiple projects. The reason for this setup is so that, we can then remotely invoke the command, 'svn mkdir' without having to log into the bigbird server and issue a svnadmin create. This removes the hassle of having to ssh into the main server.

A side-effect of this setup is that there will be a global revision number of all projects under the trunk repository, but this can be tolerated. As an example, the ISRR paper can be checked out at http://bigbird.comp.nus.edu.sg/motion/paper/trunk/isrr09ges/ and NIPS2009 paper at http://bigbird.comp.nus.edu.sg/motion/paper/trunk/nips2009/.

Note: access to the svn repository is now restricted. All actions, e.g. viewing via web-browser, checking out and committing changes, require user authentication.

2. Standard Workflow for Fixing Bug (on Trunk)

1: Checkout Code (One time only)

2: Update local copies from SVN server

3: Make changes, fix bugs

4: Update local copies and manually fix conflicts if there is any

5: Commit changes

(Repeat 2-5)

3. Standard Workflow for Experimenting (on Branches)

1: Checkout Code (One time only)

2: Make a new branch

3: Do whatever with the branch

4: Apply bug fixes from trunk to branch if necessary (Merging)

5: Delete the branch if it is no longer needed

6: Reintegrate the branch to trunk if it is successful

4. Initial Checkout

To check out a repository, simply issue the command below. In the example, the trunk folder of the auv repository is being checked out.

koksung@goskunk:~/temp$ svn co http://bigbird.comp.nus.edu.sg/motion/proj/auv/trunk/
A trunk/AUVmedium5depths.pomdp
A trunk/AUVmedium5depths.xml
A trunk/AUVPomdpgenerator.py
A trunk/AUVXMLgenerator.py
Checked out revision 1.
koksung@goskunk:~/temp$

5. Meaning of the Prefix Letters

Below are some of the more common letters that one encounters during the daily usage of svn and their meanings.

  • 'A' -- Addition
  • 'D' -- Deletion
  • 'C' -- Conflict exists with this file
  • 'G' -- Modifications have been merged successfully
  • 'M' -- File has been modified since last svn update
  • 'R' -- Replaced
  • '?' -- Not in repository, svn doesn't know about it

6. Creating a New Repository

6.1. A new code development repository

Suppose you want to create a new svn project repository, let's call it auv. Firstly create 2 folders, "trunk" and "branches" in your auv project folder. Then move all your source files into the trunk folder. Then issue the following commands in the example shown:

koksung@bigbird:~$ sudo svnadmin create /home/motion/proj/auv
koksung@bigbird:~$ sudo chown -R www-data /home/motion/proj/auv
koksung@bigbird:~$ svn import /home/koksung/myproject/auv/ file:///home/motion/proj/auv/ -m "Initial Import"
Adding auv/trunk
Adding auv/trunk/AUVmedium5depths.pomdp
Adding auv/trunk/AUVmedium5depths.xml
Adding auv/trunk/AUVPomdpgenerator.py
Adding auv/trunk/AUVXMLgenerator.py
Adding auv/branches

Committed revision 1.
koksung@bigbird:~$

Explanation of the above commands: Our server is Ubuntu which is a Debian derivative. The user id that accesses the svn repository via the Apache http protocol is given by the default: www-data. So by initially creating the project folder and importing the files as the user www-data, this eliminates the additional step of having to setup proper permissions for group and others.

Some IMPORTANT things to note, due to the hack/compromise the last time. Only selected people with sudo rights can create a repository. The commands above serve as documentation for the administrators to remember the exact command sequence.

Your newly created svn repository is now ready for check out at the URL: http://bigbird.comp.nus.edu.sg/motion/proj/auv/
Note: auv is the example project folder here, remember to change auv to the name of your project. Please send us an email if you still encounter permission problems, koksung or zhanwei

6.2. A new paper project directory

As the paper directory is setup to have only one repository, the most straightforward way to create a new paper directory is to issue the following command:

koksung@goskunk[09:48:35]:~$ svn mkdir http://bigbird.comp.nus.edu.sg/motion/paper/trunk/YourFolderName -m 'test2'
Committed revision 489.
koksung@goskunk[09:49:03]:~$

Note that the above command is an immediate commit, thus we need to issue the "-m" option for a message description.

Alternatively, one may also first check out the trunk of the paper, i.e. http://bigbird.comp.nus.edu.sg/motion/paper/trunk/ and then in your local copy, issue "svn mkdir <name of paper project>". Lastly, do a svn check-in to commit the creation of this new paper project directory.

Remember, the command to issue is "svn mkdir" and not "mkdir", the latter only creates a local directory whereas the former will direct svn to create a project directory at the paper repository the next time you commit changes.

7. Deleting a File in a repository

Note that svn's design philosophy is "Make local changes, commit for global effect". This applies to almost every possible actions. E.g. to delete a file, you will delete your LOCAL copy and then commit, to sync the svn server.

Issue the following commands to delete a file. Notice the line: "D AUVPomdpgenerator.py", the letter 'D' means the file is scheduled for deletion and it will take effect the next time you commit changes.

koksung@bigbird:~/temp/auv/trunk$ ls -l
total 16364
-rw-r--r-- 1 koksung koksung 21264 Mar 17 09:13 AUVPomdpgenerator.py
-rw-r--r-- 1 koksung koksung 26111 Mar 17 09:13 AUVXMLgenerator.py
-rw-r--r-- 1 koksung koksung 16219340 Mar 17 09:13 AUVmedium5depths.pomdp
-rw-r--r-- 1 koksung koksung 455664 Mar 17 09:13 AUVmedium5depths.xml
koksung@bigbird:~/temp/auv/trunk$
koksung@bigbird:~/temp/auv/trunk$ svn delete AUVPomdpgenerator.py
D AUVPomdpgenerator.py
koksung@bigbird:~/temp/auv/trunk$ svn commit -m "Deleted AUVPomdpgenerator.py"
Deleting trunk/AUVPomdpgenerator.py

Committed revision 2.
koksung@bigbird:~/temp/auv/trunk$ ls -l
total 16340
-rw-r--r-- 1 koksung koksung 26111 Mar 17 09:13 AUVXMLgenerator.py
-rw-r--r-- 1 koksung koksung 16219340 Mar 17 09:13 AUVmedium5depths.pomdp
-rw-r--r-- 1 koksung koksung 455664 Mar 17 09:13 AUVmedium5depths.xml
koksung@bigbird:~/temp/auv/trunk$

8. Adding a File to subversion control in an existing repository

The scenario: suppose you have checked-out a repository, you created a file and would like to add it to subversion control to this existing checked-out repository. Follow the steps below. Notice the line:"A aNewFile.txt", the letter 'A' indicates that the file has been made known to svn and it will be added to subversion control during the next commit. Once again, svn's philosophy: "Make local changes, commit for global effect".

koksung@bigbird:~/temp/auv/trunk$ ls -l
total 16344
-rw-r--r-- 1 koksung koksung 26111 Mar 17 09:13 AUVXMLgenerator.py
-rw-r--r-- 1 koksung koksung 16219340 Mar 17 09:13 AUVmedium5depths.pomdp
-rw-r--r-- 1 koksung koksung 455664 Mar 17 09:13 AUVmedium5depths.xml
-rw-r--r-- 1 koksung koksung 19 Mar 17 09:23 aNewFile.txt
koksung@bigbird:~/temp/auv/trunk$ svn add aNewFile.txt
A aNewFile.txt
koksung@bigbird:~/temp/auv/trunk$ svn commit -m "added a new file to subversion control--aNewFile.txt"
Adding trunk/aNewFile.txt
Transmitting file data.
Committed revision 3.
koksung@bigbird:~/temp/auv/trunk$

9. Deleting an entire repository

Deleting an entire repository is different from deleting a file. For this, we can remote login to the svn server (i.e. bigbird) and remove the entire project folder as the user www-data. This is the most straightforward way.

koksung@bigbird:~$ su - www-data
$ bash
www-data@bigbird:~$ rm -rf /home/motion/proj/auv
www-data@bigbird:~$ exit
$ exit
koksung@bigbird:~$

10. Update Local Copy from Server

To update your local copy, use svn update

$ svn update

11. Commit Changes Back to Server

After you have made changes to the local copy. You need to commit changes back to Server so that others can see it. Go the directory that you would like to commit, then:

$ svn commit -m "Fixed a bug"

12. Branching

Suppose you would like to branch off the project for some private development, this can be easily done in svn---you make a copy of the project in the repository using the svn copy command.

koksung@goskunk:~/temp/trunk$ svn copy http://bigbird.comp.nus.edu.sg/motion/proj/auv/trunk \
> http://bigbird.comp.nus.edu.sg/motion/proj/auv/branches/my-private-branch \
> -m "Creating a private branch"
Committed revision 3.
koksung@goskunk:~/temp/trunk$

Now that you've created a branch of the project, you can check out a new working copy to start using it. The check out command is as mentioned above. There's nothing special about this working copy; it simply mirrors a different directory in the repository. When you commit changes, however, others won't see them when they update, because their working copies are of /auv/trunk.

13. Tagging

Suppose you reached a significant milestone in the development of the project and want to save a snapshot of the current repository.

This is the same copy command you used for branching. By convention, it should copy to the "tags" directory of the project.

14. Merging From Trunk to Branch

Suppose that you have made some bug-fixes on the trunk, and you would like to apply those to your branch too.

There may be some conflicts. After resolving these conflicts manually, you need to commit these changes back to server.

$ svn commit -m "Merged bug-fixes from trunk"

15. Reintegrate Branch back to Trunk

When a branch is mature enough, you may reintegrate the branch back to trunk. The result is to make the trunk identical to the branch.

Note: Remember to merge all bug-fixes from trunk to your branch first. And email everyone before reintegrating branch back to trunk.

Resolve possible conflicts, then do a commit

$ svn commit -m "Reintegrate branch back to trunk"

$LoginAction · edit · upload · history · print
Page last modified on May 10, 2010, at 03:46 AM