fix(git): handle file renames between folders (#6020)
* git storage: handle file renames between folders --------- Co-authored-by: Nicolas Giard <github@ngpixel.com>
This commit is contained in:
		| @@ -135,7 +135,7 @@ module.exports = { | ||||
|         transform: async (page, enc, cb) => { | ||||
|           const pageObject = await WIKI.models.pages.query().findById(page.id) | ||||
|           page.tags = await pageObject.$relatedQuery('tags') | ||||
|            | ||||
|  | ||||
|           let fileName = `${page.path}.${pageHelper.getFileExtension(page.contentType)}` | ||||
|           if (WIKI.config.lang.code !== page.localeCode) { | ||||
|             fileName = `${page.localeCode}/${fileName}` | ||||
|   | ||||
| @@ -146,10 +146,24 @@ module.exports = { | ||||
|       const diff = await this.git.diffSummary(['-M', currentCommitLog.hash, latestCommitLog.hash]) | ||||
|       if (_.get(diff, 'files', []).length > 0) { | ||||
|         let filesToProcess = [] | ||||
|         const filePattern = /(.*?)(?:{(.*?))? => (?:(.*?)})?(.*)/ | ||||
|         for (const f of diff.files) { | ||||
|           const fMoved = f.file.split(' => ') | ||||
|           const fName = fMoved.length === 2 ? fMoved[1] : fMoved[0] | ||||
|           const fPath = path.join(this.repoPath, fName) | ||||
|           const fMatch = f.file.match(filePattern) | ||||
|           const fNames = { | ||||
|             old: null, | ||||
|             new: null | ||||
|           } | ||||
|           if (!fMatch) { | ||||
|             fNames.old = f.file | ||||
|             fNames.new = f.file | ||||
|           } else if (!fMatch[2] && !fMatch[3]) { | ||||
|             fNames.old = fMatch[1] | ||||
|             fNames.new = fMatch[4] | ||||
|           } else { | ||||
|             fNames.old = (fMatch[1]+fMatch[2]+fMatch[4]).replace('//', '/'), | ||||
|             fNames.new = (fMatch[1]+fMatch[3]+fMatch[4]).replace('//', '/') | ||||
|           } | ||||
|           const fPath = path.join(this.repoPath, fNames.new) | ||||
|           let fStats = { size: 0 } | ||||
|           try { | ||||
|             fStats = await fs.stat(fPath) | ||||
| @@ -166,8 +180,8 @@ module.exports = { | ||||
|               path: fPath, | ||||
|               stats: fStats | ||||
|             }, | ||||
|             oldPath: fMoved[0], | ||||
|             relPath: fName | ||||
|             oldPath: fNames.old, | ||||
|             relPath: fNames.new | ||||
|           }) | ||||
|         } | ||||
|         await this.processFiles(filesToProcess, rootUser) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user