Motion on Subversion (SVN)
SVN or subversion has a read only access which is open to anyone. All you need is the svn client and you can checkout a working copy of Motion. Svn is actually part of most distributions or at least you can easily install a binary package (rpm or deb). To see if you have it just run the command 'svn' and you will know.
By tradition the main current branch is called 'trunk'. Branches are called 'branches'. (surprise). And when you release you can choose to save a so called 'tag' which is a frozen copy of the release. Currently we do not use this.
Currently the Motion SVN only has 3 active branches: trunk , 3.2.10 and motion4.
- trunk is the tree from which future releases are branched/released from.
- 3.2 current stable branch from which the 3.2.X releases are built
- motion4 is a playground for the next generation Motion. You will find code there but it is not working and needs maybe a year or two of work before it is done. Additionally we may decide that it is a dead end and start all over again using only part of the code. For now it is mainly Bill and Angel that experiment in the motion4 branch.
So I most of you should focus on the 'current fronze' and developers on 'trunk' too.
Motion tags, stable version released :
SVN simply works via a normal web interface. Even the SVN client works through this interface.
The Motion SVN can be studied at
http://www.lavrsen.dk/svn/motion/
And the trunk is then
http://www.lavrsen.dk/svn/motion/trunk/
Whenever someone changes anything in either trunk or motion4 the version number increases by one.
Anyone can study the code online and download any source file they wish. But it is much smarter to simply let your subversion (svn) client do it for you.
Using SVN in practical
To get your own local copy of the motion trunk do this.
Go to the place you want the motion source directory.
mkdir motion
cd motion
svn co http://www.lavrsen.dk/svn/motion/trunk/ .
That is it. You now have a local copy of the current Motion sources.
Better checkout Current branch :
mkdir motion
cd motion
svn co http://www.lavrsen.dk/svn/motion/branches/3.2/ .
And to update it simply make your current directory the motion directory and run
svn update
It is that simple.
If you change the source code and you want to make a patch.
svn diff filename.c > patchfilename.diff
Then you have a unified diff that anyone can use.
You can specify a list of filenames as well.
If you decide to remove your experiments just delete the file and do a new
svn update
and the file gets restored for you.
You can build and compile Motion in the SVN checkout directory. Any files that are added in this process are not controlled by SVN. Only the files that were checked out or added during an update. So this way you can run
svn update
followed by *./configure=,
make
,
make install
and you have a fully up to date Motion.
For those of you that do not want this - there is the daily source snapshot:
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionDailySourceSnap
Each night at 5:10 CET / 4:10 GMT a script automatically make a local SVN checkout and makes a daily snapshot of the Motion sources. So you can always pick up a fresh copy of Motion from there. If we make an important bugfix then Kenneth sometimes manually makes an extra daily snapshot so the reporter of a bug can get an urgent fix.
This also means that Kenneth releases less Motion snapshot releases compared to earlier. When bugs are closed we now put the SVN number that fixed the bug in the bug report.
When we change the trunk code we always update the CHANGES file so you can see what has changed.
There is a special Mailing list defined on Sourceforge called
motion-devel. Each time one of us core developers checkin a change to SVN, SVN sends an email to this mailing list with a description of the change and the entire code change as a unified diff. That makes it easy to follow what is changing along the way.
Anyone can subscribe to the list if you wish to know when it makes sense to update your local SVN copy. You are also welcome to post normal messages on the list. Right now there are 3 subscribers so ordinary questions should still be posted in the normal
motion-user= mailing list including general questions about development. Use _motion-devel mainly for comments about the code that has changed. To join or view the archives go here:
http://sourceforge.net/mail/?group_id=13468
Last note. Please do not start making automatic SVN updates every 10 minutes. It adds a lot of load to the server which also hosts the Motion TWiki. Code updates happen 1-2 times per week. Motion is a mature project and not that busy. Instead join the mailing list and svn update when there is a code change. But if you feel like making a manual svn update do not hesitate to do so. Just don't make a cron job that does it all the time.
Enjoy this new tool in the Motion project.
And feel free to ask questions about SVN here or on the list. The SVN manual is online at
http://svnbook.red-bean.com/en/1.1/index.html
List of Developers with SVN access
We are open to giving additional people access but it has to be from serious applicants that have already submitted quality patches to Motion before and has actively followed up on fixing bugs in the code they added - and understand and agree with the
MotionMissionStatement
SVN Cheat Sheet
(most important SVN commands)
Check out
-
mkdir motion
-
cd motion
-
svn co http://www.lavrsen.dk/svn/motion/trunk .
<- note the dot!
Check out revision number
-
mkdir motion
-
cd motion
-
svn co http://www.lavrsen.dk/svn/motion/trunk . -r147
<- note the dot!
Update to HEAD
HEAD is the same as current SVN version
Update to a revision number
Commit change
Only the few people with checkin rights can do this.
-
svn commit
always follow up with svn update
Revert change
Only the few people with checkin rights can check in the reverted code. If you do not have checkin rights, make a patch instead and post it.
-
svn merge -r 47:46 http://www.lavrsen.dk/svn/motion/trunk
(revering change done between 46 and 47)
-
svn status
(check the right files are reverted)
-
svn diff
(see the reverted change)
-
svn commit
(commit the the reverted source tree)
Info
-
svn info
gives the URL and current revision info
-
svn log -v -r 1002:1004
show the messages and files modified from rev 1002 to 1004
-
svn stat
prints the status of working copy files and directories. Shows what is not under SVN control and ?-marks
Making patches
-
svn diff modfilename > patchfile
create a patch file between the current SVN version and the modified file give. Can be a list of files. If no name given it is all changed files.
-
svn diff modfilename -r 1002:1004
Some non-SVN commands for development
-
gpg -a -u kenneth@lavrsen.dk -b motion-3.2.8.tar.gz
Making a signature using private GPG key.
--
KennethLavrsen - 20 Apr 2006