我正试图创建一个cronjob,以git备份我的所有Jenkins配置。在我的存储库中,唯一需要跟踪的是每个Jenkins项目中的config.xml
。文件系统的结构类似于../jenkins/jobs/[PROJECTNAME]/config.xml
。.git
位于作业中。
我不想显式地忽略所有其他文件夹/文件,但只允许该位置的config.xml
。我提出了以下工作解决方案:
*
!.gitignore
!config.xml
!*/
*/workspace
*/modules
/config-history
*/config-history
*/*/config-history
*/*/*/config-history
*/*/*/*/config-history
*/*/*/*/*/config-history
*/*/*/*/*/*/config-history
*/*/*/*/*/*/*/config-history
不幸的是,有很多项目,git add .
需要一段时间。忽略直接包含大多数文件的workspace
,并没有增加任何好处。
Btw。直观而简短的方法根本不起作用:
*
!.gitignore
!*/config.xml
有什么想法可以在不列出所有文件的情况下优化我的.gitignore或我的gitadd吗?
既然这只是一项自动化任务,为什么不简单地只添加所需的文件呢?更换
git add .
带有
git add config.xml
git将不必遍历整个项目树。
如果你想在没有加载未跟踪文件的情况下显示回购的状态,请使用
git status -uno
EDIT:当然,您必须在要添加的config.xml
所在的目录中;如果要在当前目录的子目录中添加所有config.xml
,请使用
git add */config.xml
好吧,你至少可以通过使用双星号来缩短你的.gitignore:
# other stuff here
**/config-history
它将在任何路径中匹配config-history
。