trunk: contains latest source code, which is on development
tags: contains snapshot of project. For example: Project A releases version 1.0, all sources inside trunk will be tagged into 1.0 tag, and later, when we need to build/deploy or review version 1.0 again, we will get the tag 1.0
- branches: contains different branches of project. Developers can work on multiple, simultaneous features without affecting others. Branches can be merged later after feature has been implemented
commit: when developer changes code, architecture, structure, documentation,… and puts it on server, this is called commit, the commit_should contains a message which describe the change of that_commit, every _commit_will increase _revision_of SVN by 1
checkout: user who has credential to access to SVN and get content of the SVN at a specific revision, usually latest one, this revision_is called _HEAD– top position of SVN structure.
revert: after made some changes, developers think it was a mistake and want to clear all the changes they had made, they will revert– restore state of 1 or many documents to a specific revision, usually they will _revert_to current _revision_which they are working on.
merge: merging code from different _branch_to one, the second branch will be redirected to first branch.
update: when we update working copy will take currentworking copy to selected revision
Another method can solve those issues called Copy-Modify-Merge
First, Harry and Sally read file A from repository
- They edit this file in parallel
- Sally finishes first, write A” to repository
- After that, Harry finishes, tries to write A’ to repository and will face out-of-date error
Now Harry reads file A from repository again
- Harry compares and manually merges changes from A” to his A’ to create A* version
- Harry writes A* to repository
- Sally reads A* from repository
- Now Harry, Sally and repository all contains A* with necessary changes from both Harry and Sally