DOCUMENT:Q237847 01-MAY-2001 [ssafe] TITLE :INFO: The Role of the PJM File in VSS and VFP Integration PRODUCT :Microsoft SourceSafe PROD/VER:WINDOWS:5.0,5.0a,6.0 OPER/SYS: KEYWORDS:kbinterop kbSSafe500 kbSSafe600 kbvfp kbvfp500 kbvfp500a kbvfp600 _IK kbGrpDSSSafe ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual SourceSafe for Windows, versions 5.0, 6.0 - Microsoft Visual FoxPro for Windows, versions 5.0, 5.0a, 6.0 ------------------------------------------------------------------------------- SUMMARY ======= The .pjm file is the Project MetaFile used by Visual FoxPro (VFP) and Visual SourceSafe (VSS) integration. Understanding its usage can help you troubleshoot certain problems that may arise when using the integration. MORE INFORMATION ================ The initial limitation of enabling multi-user development of a VFP project is that the VFP project files (.pjx and .pjt) are binary files, and therefore cannot be simultaneously checked out by multiple users. To resolve this, the integration uses the .pjm file, which is a text file. Based on the information in the .pjm file, the integration generates local copies of the .pjx file and .pjt file for each user. It is important that the .pjm file be always checked out to all users. For the .pjm mechanism to work correctly, you should observe the following guidelines: - Do not add the .pjx or .pjt files to VSS. - Enable multiple checkouts in the VSS administrator. - Never check in the .pjm file. - When choosing "Join Source Control Project" inside VFP, you receive a message that the .pjm is already checked out to another user. Choose Yes on this message. (Note that this is an informational message, not an error.) If you do not follow these guidelines, you can encounter problems synchronizing the VFP project's (.pjx) contents when one user adds files to, or removes files from the .pjx and other users try to update their local copy of the .pjx. In chronological order, when you update the project list, the integration component: 1. Generates a new local project file list (.pjm file). 2. Checks in the new project file list (with the option set to keep the file checked out). 3. Merges the local and central project file lists if there are differences. If a merge conflict occurs, VFP displays a dialog box to help you resolve it. 4. Rebuilds the local VFP project (.pjx) file based on the merged project file list. 5. Gets local copies of files added to the project by other developers. 6. Prompts you to get the latest versions of the project files. 7. Refreshes the display in the Project Manager to reflect changes. To troubleshoot synchronizing changes to the project file list between users, test for success or failure of each step in turn. Assume that UserA has added or removed files and that UserB is synchronizing his/her local copy of the VFP project (.pjx). 1. After updating the project list, UserA should open his/her local copy of the .pjm file in a text editor, and make sure that the [Project Files] section has been correctly updated. If not, the usual cause is that the .pjm file is read-only. 2. Compare the latest version of the .pjm file in VSS with UserA's local copy. You can do this either by viewing it from within the VSS Explorer, or by choosing "Show Project List Differences" from the Project, Source Control menu. The files should be identical. If not, try checking the file in from within the VSS Explorer, with the option for "Keep checked out" checked. Make sure that you can successfully check the file in. 3. UserB should repeat the test from step one. REFERENCES ========== For additional information about Visual FoxPro and Visual SourceSafe integration, please see the following article(s) in the Microsoft Knowledge Base: Q237843 HOWTO: Synchronize a Source Controlled VFP Project with Multiple Developers Q157636 HOWTO: Set Up Source Code Control with Visual SourceSafe Visual FoxPro Documentation, Programmer's Guide, Creating Enterprise Solutions, Developing in Teams Additional query words: .pjm .pjt .pjx metafile ====================================================================== Keywords : kbinterop kbSSafe500 kbSSafe600 kbvfp kbvfp500 kbvfp500a kbvfp600 _IK kbGrpDSSSafe Technology : kbVFPsearch kbSSafeSearch kbAudDeveloper kbVFP500 kbVFP600 kbVFP500a kbSSafe600 kbSSafe500 Version : WINDOWS:5.0,5.0a,6.0 Issue type : kbinfo ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.