{"id":149,"date":"2026-10-12T13:51:49","date_gmt":"2026-10-12T13:51:49","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2009\/10\/06\/how-to-create-a-unique-srcsafeini-file\/"},"modified":"2026-10-12T13:51:49","modified_gmt":"2026-10-12T13:51:49","slug":"how-to-create-a-unique-srcsafeini-file","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/how-to-create-a-unique-srcsafeini-file\/","title":{"rendered":"How to Create a Unique SRCSAFE.INI in Visual SourceSafe"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you maintain legacy Visual SourceSafe (VSS) environments, a unique <code>SRCSAFE.INI<\/code> lets you apply client- or workspace-specific settings without changing the shared default file. This guide shows the setup steps, the optional <code>#INCLUDE<\/code> pattern, and how to use <code>SSDIR<\/code> to point to the right database path.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2009-10-06; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Source reference: <a href=\"https:\/\/www.devopsschool.com\/blog\/how-to-create-a-unique-srcsafeini-file\/\">How To Create a Unique SRCSAFE.INI File?<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/10\/srcsafeini-file.png\" alt=\"SRCSAFE.INI example from the original post\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What a unique SRCSAFE.INI is used for<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the original guidance, the goal is to create a dedicated <code>SRCSAFE.INI<\/code> file in a chosen location, then point SourceSafe to the intended database with an environment variable. This is useful when you need settings that differ from the default shared file.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Keep a separate client-specific configuration.<\/li><li>Optionally inherit values from the default configuration.<\/li><li>Switch database context by setting <code>SSDIR<\/code>.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Default vs unique SRCSAFE.INI approaches<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Approach<\/th><th>How it works<\/th><th>Best for<\/th><th>Trade-off<\/th><\/tr><\/thead><tbody><tr><td>Shared default file only<\/td><td>Use the database&#8217;s existing SRCSAFE.INI as-is.<\/td><td>Simple, single-standard setups.<\/td><td>Less flexibility per user or workspace.<\/td><\/tr><tr><td>Unique SRCSAFE.INI (standalone)<\/td><td>Create a separate file with only custom values.<\/td><td>Isolated client behavior.<\/td><td>Can drift from shared defaults.<\/td><\/tr><tr><td>Unique SRCSAFE.INI + #INCLUDE<\/td><td>Custom file references the default file, then layers local values.<\/td><td>Mostly standard settings with selective overrides.<\/td><td>Depends on reachable include path.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step-by-step setup<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) Create a new SRCSAFE.INI file<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create a file named <code>SRCSAFE.INI<\/code> and place it in the location you want to use for this unique configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2) Optionally include the default SRCSAFE.INI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you want the unique copy to include the default configuration, add this line (as shown in the original post):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-ini\"><span class=\"hljs-selector-id\">#INCLUDE<\/span> &lt;<span class=\"hljs-selector-tag\">SS<\/span> <span class=\"hljs-selector-tag\">path<\/span>&gt;\\<span class=\"hljs-selector-tag\">SRCSAFE<\/span><span class=\"hljs-selector-class\">.INI<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3) Set the SSDIR environment variable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Set <code>SSDIR<\/code> to the Visual SourceSafe directory path. In <code>cmd.exe<\/code>, use:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-batch\">SET SSDIR=\\\\MyServer\\MyVSSdir\nSET SSDIR<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong> keep the equals sign tight (<code>SSDIR=value<\/code>) when using <code>SET<\/code> in Command Prompt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4) Open the database in SourceSafe<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The original article notes that this can be done even with Visual SourceSafe 5.0, but may not be necessary for every case; you can also open the database from <em>File &gt; Open<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration workflow<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Choose location for custom SRCSAFE.INI] --> B[Create SRCSAFE.INI]\n    B --> C{Use shared defaults}\n    C -- Yes --> D[Add INCLUDE line]\n    C -- No --> E[Keep standalone settings]\n    D --> F[Set SSDIR path]\n    E --> F\n    F --> G[Open database in SourceSafe]\n    G --> H[Verify expected behavior]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting quick checks<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Confirm the file name is exactly <code>SRCSAFE.INI<\/code>.<\/li><li>Verify the <code>SSDIR<\/code> path points to the intended VSS database location.<\/li><li>If using <code>#INCLUDE<\/code>, ensure the referenced path is reachable from the client machine.<\/li><li>After changing environment variables, reopen the SourceSafe client session.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Document where each custom <code>SRCSAFE.INI<\/code> file is stored and who uses it.<\/li><li>Use one consistent path style across the team to reduce path-resolution issues.<\/li><li>Prefer minimal overrides when using <code>#INCLUDE<\/code>, so shared defaults remain authoritative.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>For legacy Visual SourceSafe environments, a unique SRCSAFE.INI helps you apply client-specific settings without changing the shared defaults. This guide walks through the file setup, optional #INCLUDE usage, and SSDIR configuration.<\/p>\n","protected":false},"author":1,"featured_media":4070,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[350,3244,349,1122,3113,3247,3248,2365,593,938,3243,3249,213,3242,3246,3245],"class_list":["post-149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised","tag-create","tag-create-a-new-srcsafe-ini-file","tag-file","tag-guide","tag-how-to","tag-how-to-create-srcsafe-ini-file","tag-how-to-generate-srcsafe-ini-file","tag-new","tag-process","tag-reference","tag-srcsafe-ini","tag-srcsafe-ini-file","tag-tutorial","tag-unique","tag-visual-sourcesafe","tag-vss-database"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"predecessor-version":[{"id":78997,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/149\/revisions\/78997"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4070"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}