diff --git a/lib/git.js b/lib/git.js index 5f31f838..770752c3 100644 --- a/lib/git.js +++ b/lib/git.js @@ -2,6 +2,7 @@ const cp = require('child_process'); const fs = require('fs-extra'); const path = require('path'); const util = require('util'); +const os = require('os'); /** * @function Object() { [native code] } @@ -143,9 +144,46 @@ Git.prototype.rm = function (files) { if (!Array.isArray(files)) { files = [files]; } - return this.exec('rm', '--ignore-unmatch', '-r', '-f', ...files); + + if(os.platform() ==='win32'){ + return separateRm(this, files); + } else{ + return this.exec('rm', '--ignore-unmatch', '-r', '-f', ...files); + } }; +/** + * files separate deletion + * + * @param {Git} thisObj git + * @param {Array} files files Files argument + * @returns + */ +async function separateRm (thisObj , files ) { + + const limitFileCount = 100; + const fileLength = files.length; + let loopCount = Math.ceil(fileLength /limitFileCount); + + let startIdx = 0; + const allExecResult =[]; + let endIdx =limitFileCount; + for(let i =0;i fileLength){ + endIdx = fileLength-1; + } + + let rmFiles = files.slice(startIdx, endIdx); + allExecResult.push(await thisObj.exec('rm', '--ignore-unmatch', '-r', '-f', ...rmFiles)); + startIdx = endIdx; + endIdx = endIdx+ limitFileCount; + } + + return allExecResult[allExecResult.length-1]; +} + + /** * Add files. * @param {string | Array} files Files argument.