config-sample.json

{
    "_instructions": [
        "Copy this file to 'config.json' and fill in your values, or run New-TfvcMigrationConfig.",
        "Each source mapping targets a Git branch via 'branch' (default 'main' if omitted).",
        "Map different TFVC folders to different branches, e.g. /DEV -> dev and /Prod -> main.",
        "Use 'destinationPath' to place a mapping under a subfolder within its branch (empty = branch root)."
    ],
 
    "adoServerUrl": "https://tfs.company.com:8080/tfs",
    "collection": "DefaultCollection",
    "project": "MyProject",
    "apiVersion": "7.0",
    "pat": "",
 
    "sourceMappings": [
        {
            "tfvcPath": "$/MyProject/Application1/Prod",
            "destinationPath": "",
            "branch": "main"
        },
        {
            "tfvcPath": "$/MyProject/Application1/DEV",
            "destinationPath": "",
            "branch": "dev"
        }
    ],
 
    "gitRemoteUrl": "https://github.com/your-org/your-repo.git",
    "outputDir": "./migration-output",
    "auditMetadata": {
        "migrationScope": "Complete history of Application1 from TFVC to Git.",
        "dataOwner": "Jane Doe <jane.doe@company.com>",
        "technicalOwner": "John Smith <john.smith@company.com>",
        "acceptanceCriteria": "100% hash match, no missing files, PR approval.",
        "exceptionHandling": "Discrepancies will be documented as Known Gaps or fixed pre-migration."
    },
    "lfsThresholdBytes": 52428800,
    "lfsPatterns": ["*.dll", "*.exe", "*.zip", "*.nupkg"],
    "downloadConcurrency": 8,
    "exportConcurrency": 1,
    "addGitignore": true,
    "secretScanningEnabled": false,
    "secretReplacementToken": "***REMOVED***",
    "secretPatterns": [
        "(?i)password\\s*=\\s*['\"]([^'\"]+)['\"]",
        "(?i)api[_-]?key\\s*[:=]\\s*['\"]([^'\"]+)['\"]",
        "(?i)(?:User ID|Uid|Server|Data Source)\\s*=[^;]+;.*?(?:Password|Pwd)\\s*=([^;]+)"
    ]
}