如何使用 git 正确处理 GreaseMonkey 用户脚本?

How to correctly work on a GreaseMonkey userscript using git?

我正在为 Firefox 开发用户脚本,所以我使用 GreaseMonkey. Moreover, to facilitate the development, I use git 来更新我的代码的不同版本。

现在,让我试着解释一下这个问题。

当我将本地 git 目录中的用户脚本添加到 GreaseMonkey 时,会在我的 Firefox 配置文件的 gm_scripts 文件夹中创建新文件。

GreaseMonkey 使用这些文件作为源而不是我的 git 目录,所以如果我想修改我的代码并测试一些东西,我必须更改 gm_scripts 中的文件。这意味着我无法提交修改,我首先必须将文件从 gm_scripts 复制到我的 git 目录。这实在是太不方便了。

还有一个解决办法。我还可以从我的 git 目录修改脚本,然后使用指向这些本地文件的书签将它重新安装到 GreaseMonkey。但是再一次,这根本不方便。

我想到的第三个是将gm_scripts里面的文件夹定义为我的git目录。不幸的是,我的项目包含许多我订购到文件夹中的文件,我想保持它的整洁。但是向 GreaseMonkey 添加用户脚本会使所有文件从其文件夹中提取。

此外,我的git项目不只包含用户脚本文件夹,还有一些其他的东西。因此,将 gm_script 的目录声明为 git 的源可能不是一个好主意,将许多文件放入 gm_scripts 而它们与用户脚本无关不是好方法。被迫在我的 Firefox 配置文件深处丢失的文件夹中工作是不对的。

我想知道是否有一种技术可以在包括 GreaseMonkey 和 git 的项目上高效、轻松地工作。

You could link the necessary files!

Windows (Elevated Command Prompt): mklink <<gmfile>> <<gitfile>>

Unix/Linux: ln -s <<gitfile>> <<gmfile>

感谢 Greasespot 讨论组的 Enkidu 的回复!


使用Windows和一个.bat文件,此代码用于link你git文件夹中的所有文件到Greasemonkey之一(它可能有错误如果路径中有空格或者您的两个文件具有相同的名称)。

echo off

set git_dir=C:\path\to\your\git\folder
set gm_dir=C:\path\to\your\greasemonkey\userscript\folder\

for /R %git_dir% %%G IN (*) do (
    echo Y | del %gm_dir%%%~nxG
    mklink %gm_dir%%%~nxG  %%G
)