前提

这个存储库借用wsf文件后,代码以模块为单位进行管理。
・在 Windows (WSL2) x GitHub 上使用 Ubuntu 进行存储库管理。

旧:代码修复程序

  1. 复制本地仓库到Win环境目录
  2. 运行 wsf 文件(导入模块)
  3. 修复了Win环境目录下的Excel宏
  4. wsf 文件执行(模块导出)
  5. 仅将修改后的模块文件复制到 Ubuntu 上的本地存储库

    文件夹结构

    ・Excel 宏存储在root/bin/
    ・模块文件存放在src/Excelマクロ/
    ・wsf文件直接存放在root

    root/
     ├ .git/
     │ 
     ├ .github/
     │ 
     ├ bin/
     │ └ Excelマクロ
     ├ src/
     │ └ Excelマクロ/
     │   
     └ vbac.wsf
    
    

    任务

    1. 在 WSL2 环境中执行上述 wsf 文件→错误
    2. 忘记导入模块并修复同一模块 → 发生降级
    3. 修复后,输入被误认为是输出→ 修复的内容是Shaka

      对策

      1. 使用 shell 脚本从 WSL2 环境运行 wsf 文件
      2. 使用 git 挂钩在拉取时自动运行导入
      3. 如果 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 环境中完成修复工作了!
        (提交操作发生了一些变化......)

        新:代码修复程序

        1. 修复了存储库中的 excel 宏
        2. 使用./decombine.sh(导出模块)运行 shell 脚本
        3. 仅提交修改的模块,恢复其他更改

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308628259.html

相关文章:

  • 2021-12-29
  • 2021-12-14
  • 2021-04-30
  • 2021-06-16
  • 2021-11-01
  • 2021-12-05
  • 2021-09-24
  • 2022-12-23
猜你喜欢
  • 2021-10-18
  • 2021-05-07
  • 2021-11-09
  • 2021-05-04
  • 2022-02-19
  • 2022-12-23
  • 2021-04-07
相关资源
相似解决方案