| 
				
			 | 
			
			 | 
			@@ -63,6 +63,10 @@ var getShellTask = (command, args, options) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var callsheltask = (args) => { return () => { return nodeShellExec.apply(null, args) } } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var callgitbashtask = (args) => { return () => {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return nodeShellExec( `"${gitbash}"`, ['-c', `"${args[0]} ${args[1].join(' ')}"`], args[2]) }  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var getTaskCheckExists = (command, options) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  options = options || {} | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -118,6 +122,9 @@ var getPullCmd = (repo, branch) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // console.log(useGitPull)var getPullCmd = (repo, branch) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // console.log(useGitPull) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // var pullCmd = [gitInstallDir | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   , ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   , { cwd: instanceroot + '/' + repo, title: 'pull all origins for ' + repo }] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  if(branch) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var parameters = ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var pullCmd = [ gitbash | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -513,6 +520,7 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // git branch --set-upstream-to=elixir-unc/master master | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // git push --set-upstream elixir-unc branch.. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'set-url': (remotename, url) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // git remote set-url elixir-unc //10.10.5.60/gitrepo/chess/bbhverse | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var pushable = processedArgs.pushable || false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    remotename = remotename || processedArgs._[1] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    url = url || processedArgs._[2] | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -522,6 +530,7 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if (pushable) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          ['git', ['remote', 'set-url', remotename, url + '/' + repo], { cwd: instanceroot + '/' + repo }] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , ['git', ['remote', `set-url`, '--push', remotename, url + '/' + repo], { cwd: instanceroot + '/' + repo }] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      else { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -530,6 +539,13 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var x = (args) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // console.log(args) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return nodeShellExec.apply(null, args) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // return Promise.resolve(true) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var perform_git_seturl = (dir) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      op['is-git-repo'](dir).then((logEntry) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        any(serial_perform_git_seturl(dir.name).map(x)) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -613,17 +629,17 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var perform_git_remove = (dir) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      op['is-git-repo'](dir).then((logEntry) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // console.log(code) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // if (code) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (logEntry.success) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          nodeShellExec('git', ['remote', 'get-url', remotename], { cwd: dir.name, stdio: 'ignore' }).then(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            any(serial_perform_git_remove(dir.name).map(x)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            .catch((e) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.log('skipped : ' + dir.name + ', reason : No remote named origin') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // else console.log('Skipped : Not a Git Repo : ' + dir.name) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }).catch((e) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.log('Failed : ' + dir.name) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // console.log('Failed : ' + dir.name) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -690,6 +706,227 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    else return op['runas']() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'repo-relocate' : function(args){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // relocate a subfolder in source repo to same subfolder in target repo with history.  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var args = args || { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        remotebase : processedArgs._[4] || 'http://git.bbh/chess/' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , folder : processedArgs._[3] || 'server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , sourcerepo : processedArgs._[2] || 'client' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , targetrepo : processedArgs._[1] || 'elixir-server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var sourcerepooptions = { cwd: `${instanceroot}/relocate/${args.sourcerepo}` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // , stdio: ['pipe', process.stdout, process.stderr] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , inherit: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        shell: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , runas: processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return op['repo-split'](args).then(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return op['repo-merge'](args).then(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // cleanup folder from source. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        var cmdseq = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ['rm', ['-rf', `${args.folder}`], sourcerepooptions ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // commits have to intentional... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // , ['git', ['commit', '-a', '-m', `relocate folder ${args.folder} to ${targetrepo}`], sourcerepooptions ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return any(cmdseq.map(callsheltask)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }).catch(e=>{console.error(e)}) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'repo-split' : function(args) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // https://gist.github.com/smdabdoub/17065c348289158277b5 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * Eg : folder, remotebase, sourcerepo, targetrepo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *  args.folder = 'server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *  args.remotebase = 'https://git.bbh/chess/' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *  args.sourcerepo = 'client' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *  args.targetrepo = 'elixir-server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var args = args || { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        folder : 'server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , remotebase : 'http://git.bbh/chess/' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , sourcerepo : 'client' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , targetrepo : 'elixir-server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var options = { cwd: `${instanceroot}/relocate` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // , stdio: ['pipe', process.stdout, process.stderr] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ,  inherit: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        shell: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , runas: processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var cmdseq = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // create a temporary working dir in current folder where we started execution. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ['mkdir', [ '-p', 'relocate']] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , ['git', ['clone', `${args.remotebase}${args.sourcerepo}`], options ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , ['git', ['clone', `${args.sourcerepo}`, `relocate-${args.sourcerepo}-${args.folder}`], options] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , ['git', ['clone', `${args.remotebase}${args.targetrepo}`, `relocate-${args.targetrepo}-${args.folder}`], options] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return any(cmdseq.map(callsheltask)).then(() => {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // , ['git', ['subtree', 'split', '-P', `${args.folder}`, '-b', `relocate-${args.sourcerepo}-${args.folder}`], sourcerepooptions]  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // split doesnt retain folder structure we need to move and commit ourselves through a branch to retain history...  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // , ['git', [`checkout relocate-${args.sourcerepo}-${args.folder}`], sourcerepooptions]  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // , ['mkdir', [`${args.folder}`], sourcerepooptions] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // , ['git', ['mv', `!(${args.folder})`, `${args.folder}`], sourcerepooptions ] // requires  shopt -s extglob | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // , ['git', ['commit', `-m`, 'Moved to same subfolder after subtree split in branch'] , sourcerepooptions] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			           | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // subtree split and filter-branch are options. We currently use repo-filter.  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return  op['filter-repo'](args) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }).catch(e=>{console.error(e); throw 'failed'}) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'repo-merge' : function(args) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Merge source repo into target repo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var args = args || { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        folder : 'server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , remotebase : 'http://git.bbh/chess/' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , sourcerepo : 'client' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , targetrepo : 'elixir-server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var sourcerepooptions = { cwd: `${instanceroot}/relocate/relocate-${args.sourcerepo}-${args.folder}` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // , stdio: ['pipe', process.stdout, process.stderr] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , inherit: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        shell: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , runas: processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var targetrepooptions = { cwd: `${instanceroot}/relocate/relocate-${args.targetrepo}-${args.folder}`  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // , stdio: ['pipe', process.stdout, process.stderr] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , inherit: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        shell: true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      , runas: processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var cmdseq = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ['git', ['pull', `../relocate-${args.sourcerepo}-${args.folder}`, `master`, '--allow-unrelated-histories']  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , targetrepooptions ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // , ['git', ['push', targetrepooptions ] // manual push for now.. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return any(cmdseq.map(callsheltask)).catch(e=>{console.error(e)}) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'filter-repo' : function(args){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // Merge source repo into target repo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var args = args || { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          folder : 'server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , remotebase : 'http://git.bbh/chess/' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , targetrepo : 'elixir-server' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var targetrepooptions = { cwd: `${instanceroot}/relocate/relocate-${args.sourcerepo}-${args.folder}`  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , inherit: true, shell: true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , runas: processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var cmdseq = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // git checkout -b feature/merge-old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              // git remote add src-project ../src-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ['git', ['filter-repo', '--path', `${args.folder}`], targetrepooptions ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return any(cmdseq.map(callsheltask)).catch(e=>{console.error(e); throw 'failed' }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'filter-branch' : function(preservefolder, repo){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // https://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // git subtree split -P <name-of-folder> -b <name-of-new-branch> | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Preserve a specific folder. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // PB : TODO -- filter-branch has known issues. Explore subtree and filter-repo... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    git clone repo reposplit | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter {{folder}} -- --all  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    git remote rm origin | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    throw 'filter-repo-history not yet implmented pls refer to manual commands in code.' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // , 'repo-merge-folder' : function(mergetarget, mergesource, mergefolder){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   // Merge repo2 into a subfolder in repo1 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   // https://alexharv074.github.io/puppet/2017/10/04/merge-a-git-repository-and-its-history-into-a-subdirectory-of-a-second-git-repository.html | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   // https://thoughts.t37.net/merging-2-different-git-repositories-without-losing-your-history-de7a06bba804 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   /* | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     cd repo1 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git remote add -f tempmergesource ../{{mergesource}}/.git | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git merge -s ours --no-commit tempmergesource/master --allow-unrelated-histories | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git read-tree --prefix={{mergefolder}} -u tempmergesource/master: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git commit | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     // Repair History | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     // === git filter-branch --tree-filter '(echo === $GIT_COMMIT:; git ls-tree $GIT_COMMIT) >> /tmp/tree.log' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			           | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //             #!/usr/bin/env bash | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                       first=ed4f16becc2f03820c164e0617bb98f12ff49ef0 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                       last=038e26e21bd60fa265d6637261f3bc918780d2e8 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                       subdir=server | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                       git filter-branch --tree-filter ' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         first='"$first"' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         last='"$last"' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         subdir='"$subdir"' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         log_file=/tmp/filter.log | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         [ "$GIT_COMMIT" = "$first" ] && seen_first=true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         if [ "$seen_first" = "true" ] && [ "$seen_last" != "true" ]; then | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           echo "=== $GIT_COMMIT: making changes" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           files=$(git ls-tree --name-only $GIT_COMMIT) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           mkdir -p $subdir | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           for i in $files; do | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                             mv $i $subdir || echo "ERR: mv $i $subdir failed" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           done | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         else | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           echo "=== $GIT_COMMIT: ignoring" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         fi \ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                           >> $log_file | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         [ "$GIT_COMMIT" = "$last" ] && seen_last=true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                         status=0  # tell tree-filter never to fail | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //                       ' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git remote rm tempmergesource | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   // better alternative for history | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   /** | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //    *  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git clone git@server.com:old-project.git | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git clone git@server.com:new-project.git | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     cd old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     mkdir old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git mv !(old-project) old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     ls -la and gt mv hidden files .... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git commit -a -S -m “Moving old project into its own subdirectory” | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     cd ../new-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git remote add old-project ../old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git fetch old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git checkout -b feature/merge-old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git merge -S --allow-unrelated-histories old-project/master | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git push origin feature/merge-old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //     git remote rm old-project | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   */   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  //   throw 'merge-repos not yet implmented pls refer to manual commands in code.' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'pull' : (label) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Usage : | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // elxr pull -- Defaults to run config | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1019,8 +1256,7 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var performCloneAndCheckout = null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // cant use git checkout -b it fails when branch already exists. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var performCheckout = performCloneAndCheckout = (def) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if (excludeCheckouts[def.repo]) return Promise.resolve({ 'skipped': true }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var performCheckout = performCloneAndCheckout = (def) => {if (excludeCheckouts[def.repo]) return Promise.resolve({ 'skipped': true }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return performPullOrCloneForBranch(def).then(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        nodeShellExec('git', ['checkout', def.branch || checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1249,6 +1485,8 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var g = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      'client': () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // ember new --skip-bower --no-welcome --skip-git -b {{blueprint}}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.info('Creating new ember client named : ' + processedArgs._[2]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        var step1 = nodeShellExec('cmd', ['/c', 'ember', 'new', processedArgs._[2]], { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          stdio: ['pipe', process.stdout, process.stderr], | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1312,7 +1550,7 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var util = require('util') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var util = require('util'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var cliname = 'elxr'; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var ver = '1.1'; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var help = `# list of commands... please refer dveloper documentation for ${cliname} | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1908,7 +2146,7 @@ acquireElevationState().then(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var noprerequisites = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    add : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    add : true, 'set-url' : true, 'repo-relocate' : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var skipprereqs = {} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var maintask = () => { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1945,6 +2183,11 @@ acquireElevationState().then(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var min = runtimestamp; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var collect = [] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  if(noprerequisites[processedArgs._[0]] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    || skipprereqs[processedArgs._[0]] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  ) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return op[processedArgs._[0]]() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return detectInstance().then((detectedInstance)=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  |