1. mkdir tmp 2. cd tmp 3. svnadmin create SVNRepo 4. mkdir project 5. cd project 6. vi README This is a README file. 7. mkdir code 8. cd code 9. vi hello_world.py print("Hello World!") 10. cd ../.. 11. svn import project file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/trunk -m "Initial Import" 12. yes | rm -r project 13. svn checkout file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/trunk HelloWorldKen 14. svn checkout file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/trunk HelloWorldMax 15. cd HelloWorldKen 16. svn status 17. svn move code src 18. svn status 19. cd ../HelloWorldMax 20. svn status 21. svn list 22. cd ../HelloWorldKen 23. svn commit Renamed 'code' directory to more standard 'src' directory 24. cd ../HelloWorldMax 25. svn list -r BASE # repo directory for my revision 26. svn list -r HEAD # repo directory for latest revision 27. svn status -u # show me if I'm out of date with respect to repo 28. svn update 29. cd src 30. vi hello_world.py if __name__ == "__main__": print("Hello World!") 31. cd .. 32. svn status 33. svn commit Followed python convention for specifying the code to execute when invoked from the command line. 34. svn update 35. svn log 36. cd ../HelloWorldKen 37. svn status -u 38. svn update 39. cd src 40. vi hello_world.py if __name__ == "__main__": print("Hello Ken!") 41. svn commit Updated hello world to use my name. 42. svn update 43. svn log hello_world.py 44. cd ../../HelloWorldMax/src 45. vi hello_world.py if __name__ == "__main__": print("Hello Max!") 46. svn commit Updated hello world to use my name. 47. svn update 48. vi hello_world.py if __name__ == "__main__": print("Hello Max and Ken!") 49. svn resolved hello_world.py Updated hello world to use both of our names. 50. svn update 51. cd ../../HelloWorldKen 52. svn update 53. svn mkdir file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/tags -m "Create tags directory" 54. svn mkdir file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/branches -m "Create branches directory" 55. svn copy -r 3 file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/trunk file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/tags/version-1.0 Tagging version 3 of the trunk as release 1.0 56. svn list file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/tags 57. svn copy -r 3 file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/trunk file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/branches/version-1 Creating a branch to handle changes to the 1.0 version 58. cd src 59. vi hello_world.py if __name__ == "__main__": print("Hello Everyone!") 60. svn commit Made program more general without making the mistake of talking to planets. 61. svn update 62. svn log 63. cd ../../HelloWorldMax ; svn update 64. svn copy -r 10 file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/trunk file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/tags/version-2.0 Ready to ship version 2.0 65. cd .. 66. svn checkout file:///Users/kena/Desktop/tmp/SVNRepo/HelloWorld/branches/version-1 HelloWorldV1 67. cd HelloWorldV1/src 68. vi hello_world.py Finally, take a look at SVNRepo just to show that its a database and its format is stable over all revisions. All the info is hiding in the database. Done!