Table of Contents
1. Top-Level Directories
1.1. Project 1.1.1. amdp 1.1.2. appl 1.1.3. appl2 1.1.4. dearth 1.1.5. factoredrock 1.1.6. koksung_code 1.1.7. momdp 1.1.8. pomdpxFileFormat 1.1.9. problemExamples 1.1.10. storytelling 1.1.11. pomdpxParserTestsuite 1.2. Paper 2. Standard Workflow for Fixing Bug (on Trunk) 3. Standard Workflow for Experimenting (on Branches) 4. Initial Checkout 5. Meaning of the Prefix Letters 6. Creating a New Repository 6.1. A new code development repository 6.2. A new paper project directory 7. Deleting a File in a repository 8. Adding a File to subversion control in an existing repository 9. Deleting an entire repository 10. Update Local Copy from Server 11. Commit Changes Back to Server 12. Branching 13. Tagging 14. Merging From Trunk to Branch 15. Reintegrate Branch back to Trunk 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 (Repeat 2-5) 3. Standard Workflow for Experimenting (on Branches)
1: Checkout Code (One time only) 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/ 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.
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 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/ 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' 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 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 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 $ 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 \ 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. zhanwei@zhanwei-desktop:~/Code/trunk$ svn copy http://bigbird.comp.nus.edu.sg/motion/proj/appl2/trunk/ http://bigbird.comp.nus.edu.sg/motion/proj/appl2/tags/version-0.93/ Committed revision 476. 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. $ svn merge http://bigbird.comp.nus.edu.sg/motion/proj/auv/trunk \ 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. $ svn merge --reintegrate http://bigbird.comp.nus.edu.sg/motion/proj/auv/branches/my-private-branch \ Resolve possible conflicts, then do a commit $ svn commit -m "Reintegrate branch back to trunk" |