前提
・这个存储库借用wsf文件后,代码以模块为单位进行管理。
・在 Windows (WSL2) x GitHub 上使用 Ubuntu 进行存储库管理。
旧:代码修复程序
- 复制本地仓库到Win环境目录
- 运行 wsf 文件(导入模块)
- 修复了Win环境目录下的Excel宏
- wsf 文件执行(模块导出)
- 仅将修改后的模块文件复制到 Ubuntu 上的本地存储库
文件夹结构
・Excel 宏存储在
root/bin/下
・模块文件存放在src/Excelマクロ/下
・wsf文件直接存放在root下root/ ├ .git/ │ ├ .github/ │ ├ bin/ │ └ Excelマクロ ├ src/ │ └ Excelマクロ/ │ └ vbac.wsf任务
- 在 WSL2 环境中执行上述 wsf 文件→错误
- 忘记导入模块并修复同一模块 → 发生降级
- 修复后,输入被误认为是输出→ 修复的内容是Shaka
对策
- 使用 shell 脚本从 WSL2 环境运行 wsf 文件
- 使用 git 挂钩在拉取时自动运行导入
- 如果 Excel 宏有差异,则禁用导入(如果文件已更新)
附加文件
拉动时自动执行导入的钩子
在
root/.git/hooks/下添加以下文件
* 不要忘记使用chmod命令赋予文件执行权限!合并后#!/bin/sh # コンバイン実行 ./combine.sh用于导入/导出模块的 shell 脚本
在
root/下直接添加以下两个文件
* 不要忘记使用chmod命令赋予文件执行权限!
* 在代码末尾执行rm -rf $copyToPath,风险自负! ! !
由于执行正在编辑的脚本时出现变量repoName的声明错误,
我炸毁了我的桌面文件夹。 . .这是一个组合。嘘#!/bin/sh # ExcelVBAにdiffがある場合は処理中断 git diff --exit-code --quiet ./bin if [ $? -eq 1 ]; then echo 'Cannot combine! (Diff exists in ExcelVBA. You may overwrite pre-decombined ExcelVBA!)' return 0 fi # Cドライブのユーザフォルダのパスを取得 # ※筆者の環境では、%USERNAME%と%USERPROFILE%でユーザフォルダ名が異なった。 # ※CRが含まれるのでsedで排除しておく。 userFolderPath="`cmd.exe /c echo %USERPROFILE% | sed 's/\r//g'`" # ユーザフォルダ名を取得 # ※ここでは、%USERPROFILE%の結果をもとにユーザフォルダ名を取得している。 userFolderName=${userFolderPath##*\\} # リポジトリのパスを取得 repoPath="`pwd`" # リポジトリ名を取得 repoName=${repoPath##*/} # Cドライブのデスクトップにリポジトリをディレクトリごとコピーする時のパス copyToPath="/mnt/c/Users/${userFolderName}/Desktop/${repoName}" # Cドライブのデスクトップにリポジトリをディレクトリごとコピー cp -rf ../$repoName $copyToPath # コピー先のディレクトリに移動 cd $copyToPath # コンバイン実行 cmd.exe /c cscript vbac.wsf combine # コンバイン後のbin/{Excelマクロ}をリポジトリのbin/{Excelマクロ}に上書きコピー cp -f ./bin/*.xlsm $repoPath/bin # # 注!:万が一、copyToPathが誤っていたら大変なことになるのでコメントアウト。 # # デスクトップに作成されたフォルダは手で消そう。 # # コピー先のディレクトリを削除 # rm -rf $copyToPath组合。嘘#!/bin/sh # Cドライブのユーザフォルダのパスを取得 # ※筆者の環境では、%USERNAME%と%USERPROFILE%でユーザフォルダ名が異なった。 # ※CRが含まれるのでsedで排除しておく。 userFolderPath="`cmd.exe /c echo %USERPROFILE% | sed 's/\r//g'`" # ユーザフォルダ名を取得 # ※ここでは、%USERPROFILE%の結果をもとにユーザフォルダ名を取得している。 userFolderName=${userFolderPath##*\\} # リポジトリのパスを取得 repoPath="`pwd`" # リポジトリ名を取得 repoName=${repoPath##*/} # Cドライブのデスクトップにリポジトリをディレクトリごとコピーする時のパス copyToPath="/mnt/c/Users/${userFolderName}/Desktop/${repoName}" # Cドライブのデスクトップにリポジトリをディレクトリごとコピー cp -rf ../$repoName $copyToPath # コピー先のディレクトリに移動 cd $copyToPath # デコンバイン実行 cmd.exe /c cscript vbac.wsf decombine # デコンバイン後のsrc/{Excelマクロ名}にある全ファイルを、 # リポジトリのsrc/{Excelマクロ名}にある全ファイルに上書きコピー cp -f ./src/*/*.* $repoPath/src/* # # 注!:万が一、copyToPathが誤っていたら大変なことになるのでコメントアウト。 # # デスクトップに作成されたフォルダは手で消そう。 # # コピー先のディレクトリを削除 # rm -rf $copyToPath结果
您现在可以在 WSL2 环境中完成修复工作了!
(提交操作发生了一些变化......)新:代码修复程序
- 修复了存储库中的 excel 宏
-
使用
./decombine.sh(导出模块)运行 shell 脚本 - 仅提交修改的模块,恢复其他更改
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628259.html