Search code examples
powershellmercurialbatch-filesubreposmercurial-subrepos

Mercurial: Windows script to add subrepository automatically


RyanWilcox had posted a script at here, that can use the following command to add subrepository automatically:

$ cd $TOP_OF_HG_PROJECT
$ addsubrepo.sh $URL_TO_HG_PROJECT relative_path/you/want_to/put_the_subrepo

How to translate it into Windows batch or powershell script?


Solution

  • Here is a quick and dirty translation. Haven't tested as I got no Mercury around. The initial script seems to be easy enough to translate into Powershell.

    # Project and relative paths as script parameters
    param([string]$project, [string]$relPath)
    
    # Let's see if there is an item .hg. If not, report error and quit
    if((test-path ".hg") -eq $false ) {
       "You MUST run this at the top of your directory structure and use relative paths"
        return
    }
    
    # Call Mercury
    & hg clone $project $relPath
    
    # Add data to .hgsub using composite formatting string
    add-content -path ".hgsub" -value $("{0} = {1}" -f $relPath, $project)
    
    # Check that .hgsub exists and issue Mercury commands if it does
    if(test-path ".hgsub") {
        hg add .hgsub
        hg commit
    } else {
        "failure, see error messages above"
    }