问题标签 [keyword-expansion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 如何在不共享敏感信息的情况下从 github 推拉?涂抹和清洁?
当我从 github 拉到服务器存储库时,我想避免覆盖某些文件中的本地化敏感信息,例如 config.php。
注意:它不是开源类型的 repo;我对存储库有完全的控制权,我是唯一的用户,它是私有的,但重要的是,它基于一个可能会改变配置文件结构的开源框架。我只是希望能够从中提取以进行测试、登台和生产,而不是意外地让生产的配置最终在测试中结束,等等。但是我无法重新编码配置文件以从其他地方提取数据而不做如果框架得到更新,以后会遇到困难的合并情况。
理想情况下,我希望能够告诉 Git,在拉取时,在从 REPO_URI 获取期间,始终丢弃可能会更改当前在 FILE_PATH 的第 24 行上找到的信息的任何大块。但是我认为这是不可能的(如果我错了,请纠正我)。
但是,除非有人可以提供一种方法来执行上述操作,否则请阅读以下解决方案并让我知道这是否是执行此操作的理想方法:
我会使用这里 git 的用户指南中描述的关键字扩展。下面我将描述我将如何做到这一点,然后在底部询问有关此方法的一些问题。
方法说明
首先,我会编写两个脚本,“sensitive_values_inserter”和“sensitive_values_remover”,它们将某些虚拟关键字(将在 github repo master 中)与特定的敏感信息(如密码、用户名、数据库路径等)交换:
等等
其次,我会制作这个脚本的三个版本,每个环境一个:测试/登台/生产。每个版本都将包含与其所属环境相关的特定密码、用户名和数据库路径,而不是虚拟值。我会将这些脚本中的每一个放在相对于这些代码存储库中的每一个的路径中,如下所示:
这些过滤器中的每一个都将具有相关设置的特定值。
然后整个 repo 的配置将被修改为:
最后在服务器存储库中执行以下操作:
这样,每当从主服务器拉出时,如果我理解正确,这些过滤器就会用我想要使用的值替换“虚拟”值。
注意:要使其正常工作,正如其他 stackoverflow 问题中所指出的那样,在设置完上述所有内容后,您必须:
在 checkout 和 stash pop 之间,我必须将所有更改提交到发生清理操作的文件中。别担心,在你提交它们之后,工作目录中的那些会被弄脏。(这有点违反直觉,但它确实有效。)
我能够成功推送到 github,并且只出现了干净的值。
(有一种替代的、更先进的技术,涉及每个分支使用一个 .gitignore,每个分支使用两个驱动程序和两个过滤器。这允许在切换到测试分支时清除实时密码,反之亦然。诀窍是在每个分支的 .gitignore 中为两个分支调用清洁器,但只调用 .gitignore 所在分支的 smudger,因此它恢复了自己的密码。仍然在这种情况下,当推送到github所有敏感信息都被清除了,这很好。如果有人感兴趣,我可以详细说明。)
关于此方法和替代方案的问题
我对此进行了测试,并且可以正常工作。但...
有没有更好的方法使用 git来做到这一点?我可能会补充一点,不能只忽略其中包含敏感信息的文件,也不能在合并时忽略对它们的更改,因为我希望能够在保留某些配置值的同时对这些文件进行更改. 这就是为什么我不想简单地使用git update-index --assume-unchanged FILENAME
来永久忽略未来对整个文件的本地修改。
谢谢。
git - 如何让 git-svn 像 SVN 的关键字扩展一样?
Git 的关键字扩展能力有限。我知道我应该编写一些实际执行扩展的脚本,因为 git 本身不会。现在,我并不担心实际完成的扩展。
我的问题是我必须使用 SVN 存储库,我想将它与 git-svn 一起使用。但是,这个特定的 SVN 存储库(我无法控制)设置了一些预提交挂钩,这需要文件具有关键字扩展。
我怎样才能至少欺骗 SVN 相信我设置了这些关键字扩展?
c - 如果没有匹配的文件,wordexp 结果
我在使用wordexp
. 如果这个函数找不到任何文件,它会像找到 1 一样返回。
调用这个程序的./a.out "test*.c"
结果是
但调用它的./a.out "test0*.c"
结果是
不应该p.we_wordc
等于0
,因为找不到文件?
提前致谢
svn - SVN关键字扩展——替换一次?
svn 可以用扩展信息替换某些关键字,例如$Rev$
to $Rev: 123$
。
但是下一次文件被更改和提交时,这个替换将再次被替换,到第二次提交的版本。
是否可以在无需编写自定义提交挂钩脚本的情况下进行“一次写入”扩展?
这是附加到修订版的信息列表,请认为“就像一个变更日志”
会成为
然后
会成为
... ETC。
如果我正确理解文档,它将变成
相反,这当然不是我想要的。
git - GIT如何在文件中注入提交信息,以便在推送到远程期间/之后?
我们的任务是在提交的文件中注入提交者、提交日期和作者姓名等提交信息。
经过一番搜索和这个线程后,我提交时如何将 Git 提交 ID 填充到文件中? 我们使用关键字扩展和格式占位符实现了对文件的注入。但是,信息是在结帐或存档后注入的。
是否可以在推送期间或之后将提交信息注入文件,以便远程文件包含该提交信息?我们意识到这听起来像是不必要的工作,但我们想知道执行此要求的可能性。
java - Lucene 8.5 中的自定义分析器
我正在尝试CustomAnalyzer
使用 Lucene 8.5 来实现。其目的是使用 wordnet 中的同义词扩展查询。我的代码如下:
但是,当我运行它时,我得到了这个异常
该文件存在,它的权限是正确的,即使我使用绝对路径也会发生指定的异常。
任何帮助将不胜感激。