You can translate the question and the replies:

What is the best way to handle branching while using Denodo and SVN?

Hello! We are using Denodo 5.5 and have been using the VCS integration with SVN to checkin our changes. However, we are starting a multi-month project and wanted to create a separate branch to do the work. The reason for doing this is that the trunk will continue to receive minor fixes and simple updates while the branch work is a major overhaul of various views and the addition of new views. My questions are: 1) What is the best way to create a branch? (We are using SVN) Can it be done within the Denodo tool? 2) What recommendations do you have for developers that will be working on the branch for some of the time and trunk during other times? (e.g., should we spin up another server for the branch work? Should we give every developer two machines? Should we have developers create two local databases, one connected to the branch and one connected to trunk?) 3) What recommendations do you have about keeping a branch "in sync" with trunk? (I read this page: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html and they talk about keeping your private branch "in sync" with trunk so that your changes don't drift too far from trunk). Should we try to do this regularly? Or just avoid it altogether? 3) After a few months, we will be done with the project and we'll want to merge the changes back together. What is the best way to merge the branch back to trunk? (while trying to take into account that although textually things might merge just fine, semantically we might run into issues, especially taking into account the fact that dependent views could be different). Is there anything Denodo specific that will help with this? Any other recommendations? (Martin Fowler has some suggestions: http://martinfowler.com/bliki/SemanticConflict.html ... Self Testing Code and merge often). Thank you~!
user
03-02-2015 17:44:00 -0500

2 Answers

Hi, at this moment you cannot create branches using the Administration Tool, you have to use your favorite SVN client to do this task (and the same for merging). Regarding the handling of branching, I usually configure globally at the server level (Admin Tool > Administration > VCS Management > Configuration) the default URL of the VCS repository (the main code trunk), for example, http://localhost:18080/svn/vdprepo/trunk. Then I create several databases: one main database pointing to the default VCS configuration and more databases for the branches (Admin Tool > Administration > VCS Management > Databases > Configure), for example, http://localhost:18080/svn/vdprepo/branches/vdprepo_b1. In this way, developers can check out code from a branch to their local virtual database and check-in to the branch using the usual process and if some changes are needed in the trunk is as simple as switch to the main database. Recommendations about branching? well, this question doesn't have an easy answer because it really depends on your specific project (and maybe this is more a SVN question than a Denodo question, but it is a good question in any case). In my opinion, in general you should avoid the creation of different branches if they are going to edit the same views. But, the main point should be: "your trunk has to be guaranteed to be stable all the time". So, in heavy projects, each developer should work on a branch (never in the trunk) and when changes are done and committed, someone (usually the project manager) has to review all the changes and merge them to the trunk. And when the new version is in the trunk, be sure your testing team execute all the appropriate tests! Hope this helps.
Denodo Team
04-02-2015 13:48:01 -0500
Thank you! For those implementing this, the steps I followed were: Assumptions: SVN URL: http://svnserver/path/to/project/trunk SVN Branch URL: http://svnserver/path/to/project/branches/branch_name Remote Database Name: special_project_db Steps: 1) I used TortoiseSVN to create a branch of trunk called "branch_name" in http://svnserver/path/to/project/branches/ . I now have http://svnserver/path/to/project/branches/branch_name 2) I used TortoiseSVN to delete ALL the foldersin http://svnserver/path/to/project/branches/branch_name/databases/ EXCEPT the folder that contains my database... Now I have ONE sub-folder in http://svnserver/path/to/project/branches/branch_name/databases/ called special_project_db 2) Create a new, blank database on the VDP server where you want to checkout a branch, the local database name can be anything 3) Follow the steps provided by the Denodo Team... VDPAdmin Tool > Administration > VCS Management > Databases > nameofyourlocaldb > configure 4) Enable VCS and change the URL to be http://svnserver/path/to/project/branches/branch_name and make sure you set your Remote Database name properly 5) Do a checkout on your local database, it should pull down all the code from the branch 6) To verify you are connected to the branch, made a minor change to the description of a datasource and checked it in via the VDPAdmin tool. I then validated that change was in the branch on my http://svnserver/path/to/project/branches/branch_name/databases/special_project_db/path/to/vql/file.vql I haven't done merging yet, but so for so good with branching. Thanks~!
user
15-04-2015 16:29:36 -0400
You must sign in to add an answer. If you do not have an account, you can register here