With LabVIEW 8.0, we improved the integration of source code control (SCC) with the LabVIEW environment. Currently, you configure SCC on a global level for the entire LabVIEW environment. All LabVIEW projects (as well as the main application instance) use this configuration information. The biggest request to enhance this feature has been to support per project SCC configuration. I would like feedback on how you envision per project SCC configuration working. Here are some questions to ponder:
Project level SCC should allow you to change configuration settings for one provider only. In other words, you can change the VSS project you use for different LabVIEW projects, but can't have one project talk to VSS and another talk to Clearcase. The main application instance (non-project development) will always use the LabVIEW environment setting.
- If SCC is not enabled globally in LabVIEW, can you still have a LabVIEW project configured for SCC?
- If SCC is not configured at a project level, does it use the LabVIEW environment settings (which would be identical behavior to 8.x)?
- If SCC is enabled globally, can you have a project NOT use SCC?
- If the SCC provider configured for a project does not match the LabVIEW environment setting, what should happen?
- How should the project level configuration be stored? Should it be part of the project file itself?
To answer your questions first:
2. I guess so (but see below)
3. Yes (but see below)
4. Use the project's provider.
5. I'm not sure ... I am sure I don't want to have a separate file which needs to be controlled (imagine having to SCC the SCC configuration file )
Does there need to be a global configuration at all? Can't SCC be purely a project-level configuration only (i.e. stored with the project file), with no "global" settings? If you need SCC for a project, you configure it for that project, otherwise, you just don't. You could provide a means of copying the SCC config from one project to another, or of storing a configuration for use on multiple projects, but other than that I don't really understand the need for a global configuration at all.
Just my $0.02 CDN
We had the project only SCC discussion internally during the 8.0 development cycle. We ultimately decided that since the 7.x user experience was that you could do SCC operations on a VI by VI basis, we decided to keep that behavior. Also, having a environment setting could be useful as a way to handle projects that don't have any SCC settings.
How would you see this feature working with your SCC process? Thanks for your feedback.
I have been using source control on my C, apps since PVCS used to have a penguin as a mascot and it ran on DOS 3.0. Since then I have migrated most of my new work to CVS running either on Linux or Server 2003. This week I muddled through the task of making LabVIEW 8.2.1, CVS, PushOK CVS SCC and LVDiff work together. So today I was searching for how to get project level control of my SCC only to find this thread which clearly states that is not an option in LabVIEW 8.2.1. So here are my comments on the questions...
From what I have seen, Microsoft Visual Studio 6 allows you to setup the SCC provider on a global basis and then gives you additional capabilities on a project-by-project basis. For years I would have thought this all you would need until I did a consulting project. I wanted to SCC the project, but the company I was working for used VisualSourceSafe. I ended up using and SSH tunnel across the Internet to check source in and out on my servers and then gave them a copy of the source at each release so they could check it into SourceSafe.
As a minimum I would like Project level control of the "Source Control Project" so that all of my LabVIEW code does not have to go into a single CVS module. At this point I think you will need to be backward compatible and support some kind of global setting since I will probably have a large code base already checked in to a single CVS module. In this case if I do not override the SCC settings on a project I would want it to at least default to the global settings. This would keep me from having to go back and change all my existing projects. There are, of course, test apps and sandboxes of LabVIEW code that I would not need SCC for so I should also be able to disable the feature on a project basis as well. If you want to go the extra mile, then allowing specification of both the SCC provider and module at the project level would probably be of aid to the consultants which might need to check in source code at their customer sites, or for those of us that have two different systems running at the same company to support legacy repositories. Frankly I do not care where you store the project level configuration - you at NI probably know the best place for it based on your project settings layout.
There is one missing feature in LabVIEW Project Source Code Control. Renaming a file in a project that is already added to SCC should rename the file under the SCC also.