{"id":15971195,"url":"https://github.com/fornever/svnutils","last_synced_at":"2026-01-20T07:02:02.882Z","repository":{"id":14371564,"uuid":"17081535","full_name":"ForNeVeR/SvnUtils","owner":"ForNeVeR","description":"PowerShell utility functions for the SVN version control.","archived":false,"fork":false,"pushed_at":"2017-11-04T06:21:56.000Z","size":52,"stargazers_count":2,"open_issues_count":11,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-04-07T03:46:16.760Z","etag":null,"topics":["powershell","svn"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ForNeVeR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-22T09:03:42.000Z","updated_at":"2023-07-25T13:50:56.000Z","dependencies_parsed_at":"2022-09-10T08:50:29.135Z","dependency_job_id":null,"html_url":"https://github.com/ForNeVeR/SvnUtils","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ForNeVeR/SvnUtils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FSvnUtils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FSvnUtils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FSvnUtils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FSvnUtils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ForNeVeR","download_url":"https://codeload.github.com/ForNeVeR/SvnUtils/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ForNeVeR%2FSvnUtils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28597985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T02:08:49.799Z","status":"ssl_error","status_checked_at":"2026-01-20T02:08:44.148Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["powershell","svn"],"created_at":"2024-10-07T20:20:23.471Z","updated_at":"2026-01-20T07:02:02.867Z","avatar_url":"https://github.com/ForNeVeR.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"SvnUtils [![Build status](https://ci.appveyor.com/api/projects/status/p349091qxfxsmde1/branch/develop?svg=true)](https://ci.appveyor.com/project/ForNeVeR/svnutils/branch/develop)\n========\n\nThis is the collection of PowerShell scripts for more comfortable\nworking with `svn` source control.\n\nConfiguration\n-------------\n\nThe values for project root path, branches base path, postfix can be\nconfigured through `SvnUtils.config` file placed in the current\ndirectory or somewhere at parent directories. See the example\n`SvnUtils.config` file bundled with the module.\n\n#### Branch name resolving\n\n`SvnUtils` includes some predefined branch aliases:\n\n* `current` means the current working copy branch in any context;\n* `trunk` means the trunk branch.\n\nYou may add your own branch resolving strategies with the\n`SvnPathResolver` function in the configuration file. Predefined\n`current` and `trunk` aliases cannot be overridden.\n\n#### Messages\n\nSome commands (e.g. `Create-SvnBranch` and `Close-SvnBranch`) generate\nmessages for SVN log. These messages may be localized in the\nconfiguration file.\n\nUsage\n-----\n\nFor all module commands to be acessible in yur environment, execute\nthe following command:\n\n    Import-Module 'path\\to\\SvnUtils.psd1' -DisableNameChecking\n\nYou may wish to add this import into your PowerShell profile (defined\nby your `$PROFILE` variable).\n\nProposed workflow\n-----------------\n\n`SvnUtils` will best help you to retain the particular branching and\ndevelopment model (scripts are also useful in many other situations,\nbut that's what they're written for).\n\nThat's the layout these scripts are supposed to maintain:\n\n    ^ (repository root)\n     + Project\n       + trunk\n       + branches\n         + company1\n           + working-branch2\n           + working-branch3\n           ...\n           + Closed\n             + working-branch1\n             ...\n         + company2\n           ...\n\nIn this model, the *project root path* is `^/Project`, the *branches\nbase path* is `branches`, the *postfix* is `company1` (determined by\nthe user need, may be empty in many cases) and example *branch name*\nis `working-branch1`.\n\nPrerequisites\n-------------\n\nMost commands require you to install any console SVN client compatible\nwith your repositories. Some commands (for example,\n`Commit-SvnChange`) require additional tools such as\n[TortoiseSvn](http://tortoisesvn.net/) and a Web browser (not\nrequired, see below).\n\nSupported commands\n------------------\n\nAll commands should be executed inside an existing repository. Some\ninformation (e.g. repository root and current branch name) will be\nextracted from it.\n\nMost parameters will be taken from configuration file if present; they\nmay be substituted with the user provided ones.\n\n    Get-SvnBranch `\n        -Root \u003c\"Root\" from config\u003e `\n        -Branches \u003c\"Branches\" from config\u003e `\n        -Postfix \u003c\"Postfix\" from config\u003e\n\nReturns list of all branches inside the specified directory.\n\n    Create-SvnBranch `\n        -SourceRoot \u003c\"Root\" from config\u003e `\n        -SourceBranches \u003c\"Branches\" from config\u003e `\n        -SourcePostfix \u003c\"Postfix\" from config\u003e `\n        -SourceName 'trunk' `\n        -TargetRoot \u003cthe same as SourceRoot\u003e `\n        -TargetBranches \u003cthe same as SourceBranches\u003e `\n        -TargetPostfix \u003cthe same as SourcePostfix\u003e `\n        -TargetName \u003cmandatory\u003e\n\nCreates a new branch inside the repository.\n\n    Get-SvnPatch `\n        -OldRevision \u003cmandatory\u003e `\n        -NewRevision \u003cmandatory\u003e `\n        -OutputPath \u003cmandatory\u003e\n\nGet the patch in the SVN format and save it to the `OutputPath`.\n\n    Apply-SvnPatch [-PatchFilename] \u003cmandatory\u003e\n\nApplies the patch file to the current directory with `TortoiseMerge`.\n\n    Commit-SvnChange -ShowBrowser \u003cflag; not enabled by default\u003e\n\nCommits the current changes with TortoiseSvn. Tries to detect merge\ncommits and present the nice commit messages for these cases. May also\ncopy the branch name and revision to clipboard and even open the\nbrowser with the corresponding bug tracker page (currently\nconfigurable only through `Svn-Commit.ps1` source).\n\n    Revert-SvnChange\n\nReverts the working copy changes using the TortoiseSvn GUI.\n\n    Merge-SvnBranch `\n        -SourceRoot \u003c\"Root\" from config\u003e `\n        -SourceBranches \u003c\"Branches\" from config\u003e `\n        -SourcePostfix \u003c\"Postfix\" from config\u003e `\n        -SourceName \u003cmandatory\u003e `\n        -Source2Root \u003c\"Root\" from config\u003e `\n        -Source2Branches \u003c\"Branches\" from config\u003e `\n        -Source2Postfix \u003c\"Postfix\" from config\u003e `\n        -Source2Name \u003cmandatory if you want 2-URL merge\u003e `\n        -TargetRoot \u003cthe same as SourceRoot\u003e `\n        -TargetBranches \u003cthe same as SourceBranches\u003e `\n        -TargetPostfix \u003cthe same as SourcePostfix\u003e `\n        -TargetName 'trunk' `\n        -Revisions `\n        -RecordOnly \u003cflag; not enabled by default\u003e\n\nPerforms an SVN merge. May perform a `--record-only` merge (consult SVN\ndocumentation). Will make 2-URL merge iff `Source2Name` provided. `Revisions`\nparameter is passed to `svn merge` as `-r\u003cRevisions\u003e`.\n\n    Switch-SvnBranch `\n        -Root \u003c\"Root\" from config\u003e `\n        -Branches \u003c\"Branches\" from config\u003e `\n        -Postfix \u003c\"Postfix\" from config\u003e `\n        -BranchName \u003cmandatory\u003e `\n        -IgnoreAncestry \u003cflag; not enabled by default\u003e\n\nSwitches the working copy to another branch.\n\n    Resolve-SvnConflict\n\nShow the TortoiseSvn conflict resolve dialog for the current\ndirectory.\n\n    Close-SvnBranch `\n        -Root \u003c\"Root\" from config\u003e `\n        -Branches \u003c\"Branches\" from config\u003e `\n        -Postfix \u003c\"Postfix\" from config\u003e `\n        -Closed \u003c\"Closed\" from config\u003e `\n        -BranchName \u003caccepts multiple values from pipeline\u003e\n\nCloses the specified branches (i.e. moves them to the `Closed`\ndirectory).\n\nTests\n-----\nThere are tests created using [Pester](https://github.com/pester/Pester/). To invoke them, install Pester (for example,\nwith `choco install pester`) and run:\n\n    cd tests\n    Invoke-Pester -Path ..\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffornever%2Fsvnutils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffornever%2Fsvnutils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffornever%2Fsvnutils/lists"}