Missing Source Control Integration files

This forum is now locked, since Gold Support is no longer offered.

Moderator: SourceGear

Locked
TonyAtMMI
Posts: 7
Joined: Fri Apr 07, 2006 4:48 am
Location: Hampshire, England

Missing Source Control Integration files

Post by TonyAtMMI » Fri Apr 07, 2006 5:42 am

We have just migrated from SourceSafe to Vault.

We are using VS.NET 2003 with Vault 3.1.8.3771.

Often we want to get the whole solution out to a different folder than the current working folder. This is to create a snapshot of a particular version of the code, or possibly to get a previously labelled version.
Sometimes we just want to get the latest version to a new computer.

In SourceSafe we could just use "Get Latest Version" to get all of the files out and create the directory tree for the solution and all sub projects.

If we do a similar thing with Vault and then open it in Visual Studio, it complains about missing Source Code Control integration files.
The MSSCCPRJ.SCC files for each project have not been created.
SourceSafe DOES create the necessary SCC integration files.

I have tried using "Open from Source Control" in VS the first time that I open the solution in a new location, (assuming I want the latest version).
This does create the necessary MSSCCPRJ.SCC files.

This method relies on scanning the project files for references to all of the required header files. In several projects, not all of the required header files are in the "Header Files" folder of the project in Solution Explorer.
This is often the case with shared header files (e.g. API or library interfaces etc.).
Therefore they are not referenced in any project file.

The compiler is perfectly happy with this (as long as the path to the folder containing the header files is in the "include" path).

However this does mean that Vault fails to get all of the required files from Source Control and therefore the solution will not build.

I have read that the MSSCCPRJ.SCC files should not be stored in Vault.

This seems to be one of the few areas where SourceSafe has an advantage over Vault (except for being much faster at checking files out and in).

What is the best solution to this problem?

Regards,

Tony

dan
Posts: 2448
Joined: Wed Dec 17, 2003 5:03 pm
Location: SourceGear
Contact:

Post by dan » Fri Apr 07, 2006 7:30 am

You will probably need to do an Open From Source Control from within VS, followed by a Get Latest from the Vault GUI client if Open From Source Control does not retrieve every file that is in the Vault tree.

I would still not recommend storing the MSSCCPRJ.SCC file under source control, since doing so will require all users to login as the same user (or use the same profile name) and open to the same local working folder location.

TonyAtMMI
Posts: 7
Joined: Fri Apr 07, 2006 4:48 am
Location: Hampshire, England

Source Control Integration

Post by TonyAtMMI » Fri Apr 07, 2006 8:47 am

Thanks Dan.

The 2 stage operation that you suggest works, but surely one should be able do this as a single operation.
When you get the solution from SourceSafe it creates all of the necessary file for SCC integration with the IDE in one operation.
As you are mainly targeting SourceSafe users, shouldn't it be as easy in Vault?


I tried adding the missing header files to the projects but Vault seems to be incredibly dumb in this respect.
In SourceSafe, if you add existing files to a project, it just checks out the project file (vcproj) as this is the only file that needs to change.

Vault insists on checking out all of the files that you are adding to the project as well as the project file.

Currently Vault takes about 15 seconds to check out or check in every single file (compared to < 1 second in SourceSafe). - (There must be something seriously wrong with our Vault or SQL Server configuration as the knowledge base claims that a check out should take < 1 second).
Adding a few files to a project is thus a painfully slow procedure.

dan
Posts: 2448
Joined: Wed Dec 17, 2003 5:03 pm
Location: SourceGear
Contact:

Post by dan » Fri Apr 07, 2006 9:27 am

There is definitely some other issue going on, since VS determines which files to check out, not Vault. Normally adding a file to a project will only checkout the project file in Vault.

You might check the status of the files in the Vault GUI client at the time you add the files. If they are anything but blank (like Unknown, edited, etc), then that might be the issue.

Also, could the issue be related to adding a file locally that is already is source control? Also, are the header files actually shared within Vault, or are they shared in the sense that multiple projects reference them from different locations, but there is only one copy of the header file in Vault?

TonyAtMMI
Posts: 7
Joined: Fri Apr 07, 2006 4:48 am
Location: Hampshire, England

Post by TonyAtMMI » Fri Apr 07, 2006 9:50 am

dan wrote:There is definitely some other issue going on, since VS determines which files to check out, not Vault. Normally adding a file to a project will only checkout the project file in Vault.

You might check the status of the files in the Vault GUI client at the time you add the files. If they are anything but blank (like Unknown, edited, etc), then that might be the issue.
Maybe the problem is that the Vault repository was created by your VSS Import Tool.
I presume that this is the reason that most files are showing the status of "Renegade".
If this is the problem, is there any way to remove the "Renegade" status of the files?
dan wrote:Also, could the issue be related to adding a file locally that is already is source control? Also, are the header files actually shared within Vault, or are they shared in the sense that multiple projects reference them from different locations, but there is only one copy of the header file in Vault?
I am trying to add the "missing" header files to the Header Files folder of the project in Solution Explorer within the IDE.
I am adding them as "existing" files.
They already exist within Vault, but "Open from Source Control" doesn't retrieve them because they are not referenced within the vcproj file.

The header files are not shared within Vault. Several source files within different projects #include them, but there is only one copy of each header file on disk.

dan
Posts: 2448
Joined: Wed Dec 17, 2003 5:03 pm
Location: SourceGear
Contact:

Post by dan » Fri Apr 07, 2006 12:02 pm

Renegade means Vault thinks the file is edited, but it is not checked out. If all your files are renegade, it is likely that the files merely have a different datetime stamp than the client thinks they should. You should verify that the file contents are the same as those in the repository, then simply to a GetLatest Overwrite, and the status should be normal going forward.

I'm not sure how they would have gotten into that state if you did your Open From Source Control into a new working folder, but it will cause problems until you clear it out.

I'm honestly not sure how VS will react if you try to add a file that is already in source control to the project. Let me know if that works after the Renegade issue is resolved.

TonyAtMMI
Posts: 7
Joined: Fri Apr 07, 2006 4:48 am
Location: Hampshire, England

Post by TonyAtMMI » Fri Apr 07, 2006 1:20 pm

Thanks Dan.

Doing a Get Latest Version with the overwrite option as you suggested has fixed the Renegade files problem.

I guess that they were flagged as "Renegade" because they had never been checked-in to Vault by either the Client application or the IDE when the repository was first created.
Instead they had been put there by the VSS Import Tool.

After a lot of effort I have managed to add all of the header files to the relevent vcproj files and so "Open from Source Control" now works without having to do a subsequent "Get Latest Version" to retrieve the missing files from the repository.
This was a fairly big effort as our solution contains several projects and hundreds of files.

It would be good if you could fix Vault to behave like SourceSafe and create the required MSSCCPRJ.SCC files when a Get Latest Version or a Get of a previously labelled version is performed.

All I need to do now is fix the performance problems.
15 seconds or more per file when checking in or checking out is simply not acceptable.

Our IT Manager has monitored the performance of SQL Server for every transaction on the Vault repository and it is incredibly slow.
The Windows 2003 Server installation of SQL Server 2000 is running on quite a fast computer with 2048MB RAM.
It is only used for Vault.

If you have any suggestions on how to optimize the performance we would be most grateful.

lbauer
Posts: 9736
Joined: Tue Dec 16, 2003 1:25 pm
Location: SourceGear

Post by lbauer » Fri Apr 07, 2006 2:27 pm

All I need to do now is fix the performance problems.
15 seconds or more per file when checking in or checking out is simply not acceptable.

Our IT Manager has monitored the performance of SQL Server for every transaction on the Vault repository and it is incredibly slow.
The Windows 2003 Server installation of SQL Server 2000 is running on quite a fast computer with 2048MB RAM.
It is only used for Vault.

If you have any suggestions on how to optimize the performance we would be most grateful.
Let's pick this up in a new thread:

http://support.sourcegear.com/viewtopic.php?p=23707
Linda Bauer
SourceGear
Technical Support Manager

Locked