Good Afternoon,
I apologize for the long post, but I have a few questions regarding Team Coding and integrating it into TFS and was hoping someone in the community would have some advice.
I’ll provide some background with the questions at the bottom, but basically, I have some confusion regarding Code Control Groups because we have multiple PL/SQL Devs working on multiple Projects in TFS, but against a common database.
Versions:
Using Toad 12.0 (Team Coding v7.0).
Integrating Source Control with Visual Studio 2012/Team Foundation Server
We currently use Harvest by Computer Associates as our source control software for a number of .Net Applications developed in Visual Studio with an Oracle back end.
The .Net code was integrated into Harvest, but the PL/SQL code was developed in TOAD and manually added to Harvest as flat files. The decision has been made to move to TFS and to attempt integrating the PL/SQL code into it as the .Net code is also integrated.
I am a PL/SQL developer only with no experience with Visual Studio or TFS and, as we make the transition, I am running into the following questions.
Note: Team Coding was successfully set up and I can check files into Team Coding and into TFS, just not quite the way I expect.
The hierarchy in TFS we are trying to achieve is the following:
Application A (This is the Team Project)
|
|____Development
|
|____Release October (Physical DB 1)
| |
| |___Project A .Net
| |
| |___Project A Oracle
| | |
| | |__Test_View_1.vw
| | |
| | |__Test_Package_1.pkb
| | |
| | |__Test_Package_2.pkb
| | |
| | |__Table_Change_1.ddl
| |
| |___Project B .Net
| |
| |___Project B Oracle
| |
| |__Test_View_2.vw
| |
| |__Test_Package_1.pkb
| |
| |__Test_Package_3.pkb
| |
| |__Table_Change_2.ddl
|
|
|____Release November (Physical DB 2)
|
|___Project C .Net
|
|___Project C Oracle
|
|__Test_View_3.vw
|
|__Test_Package_4.pkb
Our company updates their applications once per month, so we plan to start with 3 release projects for the application. On Month 4, we’ll rotate back and refresh Month 1, etc. The will each have a separate phyical database that developers will make code changes to. So, consider ‘Release October’ a single database. Each application can have multiple schemas, but for the sake of the questions, we’ll start with one.
Also, we will have six to eight PL/SQL developers making code changes for multiple TFS projects at the same time in the same schema. In development, we usually log on as the schema that owns the application objects and not with our personal user account.
I have read through all the documents online I could find and watched the Quest Youtube videos on Team Coding, but am confused on a few of the aspects.
Consider the following Assumptions:
A.) TFS has been set up by a TFS Admin such the the Release Database (‘Release October’) has been refreshed (baselined) and is ready to accept new projects from our project backlog.
B.) Developers are ready to begin creating and working new projects for the Monthly Release (‘Project A’, ‘Project B’, etc).
Questions
1.) Does Team Coding work such that PL/SQL developers will not have to work with TFS or should TFS be a black box? For example, will they have to manually create the ‘Project A’ in TFS or will Team Coding be able automate the creation of the project in TFS during Check In? It appears that the Dev will have to set up the project in TFS first and map to it in Team Coding, but wanted to confirm.
2.) Who will have the role of setting up the Code Control Groups. Is is normally done once at the start of ‘Release October’ by a Team Coding Admin for example or will each Devloper need Admin rights so that they can create a CCG for each project (‘Project A’, ‘Project B’)?
This was a point of confusion because it looks like the CCG has to be tied to a TFS Project so that when code is checked in, it will end up at the Project level and not the Release level. Since one PL/SQL developer doesn’t always know what project the other developer is ready to start, it would be difficult to have one person controlling the CCG’s.
If that is the case, it appears that each developer would need to create a new CCG as they start their individual project.
3.) Is it possible to have a single CCG set up for the Release and associated with the parent project (i.e. Release October), but have each delevelop map to the Project workspace via the Team Coding VCS Login screen? I’ve tried that, but each time I do a check in, it drops the Oracle object into the TFS directory set up in the Code Control Group (Release October), not ‘Project A’. Let me know if there is a description on how to set that up.
4.) If each developer has to create a separate CCG as they start a new project for the monthly release, can the same database object exist and be controlled in multiple CCG’s since multiple projects in a release may make changes to the same file?
5.) At the start of each Monthly Release and after we’ve refreshed the Release database with our Production database, it is advisable to Export the entire schema into a baseline project so that they show up as ‘controlled’ in the Team Coding Dashboard and have devs make changes from that. Or should developers just check out only the objects from Toad that need changes and not baseline the entire schema? Note: I don’t have details yet, but we’ll be promoting these versions in TFS to a Main branch and then to a Production branch before recycling any of the Monthly Release branches.
Thanks in advance for any advice you have since using Team Coding and Team Foundation Server is still new to me.
Most of the information I can find describe one developer using Team Coding and checking code into a single or shared project. It doesn’t really describe the roles of mulitple devs working on multiple projects in a VCS, but sharing the same physical database and how to create that type of setup in Toad and/or TFS.
Thanks Again,
Brian