Usually SVN has three root directories,
In the SVN server for each project you have the same directory structure.
'trunk' is where you keep your ever-evolving code base.
'tags' is used for the same purpose that you specified. that is, for version control.
"branches" are used for things like development of events / individual development.
Example, Let's say I'm developing a database synchronization application that will be released as a Pilot release, Moonshine release, Kilimanjaro release, an excellent release, and more.
I start in the trunk and continue development, let them say 2 months when I am ready to release Pilot.
Then I create a "tag" trunk, which I can call a "Pilot tag" that will be released to customers.
Now my main features for the next release, which is the “Moonshine release,” will be continued in the trunk. If in their "Pilot release" some bugs or demo plugs are fixed, they will be executed in the "Pilot" tag and will be immediately sent to customers.
However, since the above fixes are not in my "trunk" code, after a while (before the Moonshine release), I will "merge" the changes made in my "Pilot" tag back into the "trunk".
There may be conflicts, because the same lines of code could be changed both in the “Pilot tag” (to fix errors mentioned earlier) and in “trunk” (for updating / developing a new version). In this situation, you must carefully review the conflicts, edit any such conflicts, and accept the changes.
TortoiseSVN is the main client tool for using SVN. It embeds functions directly in your right-click menu for all the above functions, such as commit, update, merge, branch (i.e. Tag or branch), etc.
And to resolve conflicts, I personally prefer Beyond Compare, which is a third-party application that you have to buy. You can configure TortoiseSVN to invoke Beyond Compare as a conflict resolution application, and it is much better and more user friendly than the built-in conflict editor in the TortoiseSVN tool.