Mercurial 和 Git 中 JSLint 的预提交挂钩

2024-01-02

我想在提交到 Mercurial 或 Git 存储库之前运行 JSLint。

我希望这是一个自动设置的步骤,而不是依赖开发人员(主要是我)记住事先运行 JSLint。我通常在开发时运行 JSLint,但希望在 JS 文件上指定一个契约,以便在提交到存储库之前传递 JSLint。

对于水银来说,这一页 http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html#sec:hook:precommit阐明了预提交语法,但似乎唯一可用的变量是提交中涉及的parent1和parent2变更集ID。我真正想要的是与提交相关的文件名列表,以便我可以选择 .js 文件并对其运行 jslint。

GIT 的类似问题 http://book.git-scm.com/5_git_hooks.html,作为预提交脚本的一部分可用的默认信息似乎有限。

可能有效的方法是调用 hg status/git status 作为预提交脚本的一部分,解析该输出以查找 JS 文件,然后以这种方式完成工作。我希望能有更简单的事情,但我不确定调用状态作为预提交挂钩的一部分是否反映了正确的信息。例如,在 Git 中,如果尚未添加更改文件,但 git commit 使用 -a,这些文件是否会作为提交集的一部分显示在 git status 输出的正确部分中?

Update:我得到了一些东西,它在这里可见:http://github.com/jrburke/dvcs_jslint/ http://github.com/jrburke/dvcs_jslint/


以下是 @Bitbieger 的 Git 解决方案的变体,适用于Node.js http://nodejs.org和本地副本节点jslint https://github.com/reid/node-jslint(即你需要npm install jslint在您的根存储库目录中)。

另外脚本:

  • 对所有 .html 和 .json 文件以及 .js 运行 jslint
  • 仅对已添加、复制或修改的文件运行 jslint。这可以防止 jslint 在已重命名或删除的文件上出错。
  • 复制任何 jslint 错误以供用户查看
  • 使用--indent 4 --white truejslint 选项确保源代码一致性

要使其正常工作,请将以下内容复制到.git/hooks/pre-commit并且不要忘记chmod +x .git/hooks/pre-commit

# Pre-commit hook passing files through jslint
#
# This ensures that all js, html and json files are valid and conform
# to expectations.

ROOT_DIR=$(git rev-parse --show-toplevel)
JSLINT="${ROOT_DIR}/node_modules/.bin/jslint --indent 4 --white true"

for file in $(git diff-index --name-only --diff-filter=ACM --cached HEAD -- | grep -P '\.((js)|(html)|(json))$'); do
    if node $JSLINT $file 2>&1 | grep 'No errors found' ; then
        echo "jslint passed ${file}"
        exit 0
    else
        node $JSLINT $file
        exit 1
    fi  
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mercurial 和 Git 中 JSLint 的预提交挂钩 的相关文章

  • 如何在Git中手动合并所有文件?

    我想合并所有文件manually有了 meld 或任何其他 diff 工具 我如何使用 Git 来做到这一点 当我跑步时git mergetool它说no files need merging 所以我想只有当我有冲突时我才能做到这一点 有更
  • 执行 git stash 、 git checkout mybranch 、 git stash pop 的管道命令是什么?

    我想创建一个执行以下操作的脚本 1 git 存储 2 git checkout myBranch 3 git stash 弹出 有哪些 git 管道命令可以替代上述 git 瓷器命令 Edit 根据 Mark Adelsberger 和 T
  • 为什么 cmake 在 git commit 后编译所有内容

    假设我有时在 Linux 上使用 cmake 2 8 编译一段代码 我更改了一个文件 my changed file 运行 cmake 并且只构建了这个文件 到目前为止 一切都很好 现在我想提交这个 git add my changed f
  • 原始文件被分成另外两个文件,git 有没有办法查看内容去了哪里?

    我的问题 我是一名代码审查员 我在GIT中有一个情况 before a txt 然后开发人员决定拆分内容a txt分成 2 个文件 并在一次提交中添加一些更改 after b txt 很少的变化和c txt 一些变化 有没有简单的方法可以看
  • 将存储库从 Github 移至 Gitlab

    有没有办法将整个存储库从 Github 移动到 GitLab 对于代码本身来说 只需在 GitLab 上创建一个新的存储库并推送到它即可 Wiki 页面位于 Github 上的单独分支中 并通过 Git 机制进行管理 据我所知 GitLab
  • 切换到工作区并在 Xcode 中添加 CocoaPods 后提交 git 吗?

    我刚刚在 Xcode 5 中将 CocoaPods 添加到我当前的项目中 当然 CocoaPods 创建了一个工作区 并且我已在 Xcode 中启动了该工作区 我在工作区中看到了我的项目和 Pods 项目 我的项目从第一天起就处于源代码控制
  • 如何让“git status”始终使用短格式?

    我想要git status始终使用短格式 git status short M file1 M dir file2 file untracked3 dir file untracked4 似乎不存在这方面的配置选项 并且git config
  • 获取 git 存储库中每个文件的提交计数

    我正在寻找一种方法来查看有关 git 存储库中每个文件更改频率的统计信息 基本上 文件提交的频率实际上与以前的版本不同 此外 有没有办法获取文件上次更改的日期 我是一个 git 新手 还没有发现任何关于此的信息 任何帮助将不胜感激 这里有两
  • 本地分支显示在 GitHub 的“网络”视图上

    我们使用 Git 我们的工作流程由 dev 和 master 分支组成 它们位于 GitHub 和每个开发人员的本地存储库上 不会直接在 master 或 dev 上执行任何工作 而是在本地分支中执行工作 并且仅在 dev 上进行合并 然后
  • 如何克隆存储库并保留文件时间戳?

    如何从新机器上的服务器获取源代码的副本 但保留文件时间戳 通过以下步骤 所有时间戳均设置为当前日期 时间 手动创建存储库的根文件夹 光盘放入其中 执行一个hg init 使用 TortiseHg 将存储库从服务器克隆到文件夹 是否有一个选项
  • 通过 cron 进行 git 推送

    我正在尝试运行git push来自 cron 当我在 shell 上以交互方式执行命令时 一切顺利 从我的用户的 crontab 运行命令时 cron 会传递错误消息 Permission denied publickey 我认为这与查找或
  • git 可以忽略特定行吗?

    我在手机的本机浏览器上测试时使用 git 同步到phonegap 因此我有以下行 var isPhoneGap false 显然 我在构建时更改了这一点 但是有什么方法可以设置 git 来忽略这一行 或者我是否必须将其放入自己的文件中并以这
  • 反向合并具有干净历史记录的缝合功能分支

    我有这个 d0 f1 d1 d2 f2 d3 merge d4 f3 merge
  • 使用 Git 撤消临时更改

    假设我在 master 上并且有一个斑点 DEBUG FALSE CACHE SIZE 100 code code code 现在我开始在新分支中调试 DEBUG TRUE Don t forget to turn off CACHE SI
  • 如何使用 Mercurial 将文件夹与现有 Heroku 应用程序链接

    我在 Bitbucket 上有一个现有的 Django 应用程序 我能够部署到 Herokuhg git https stackoverflow com q 9591380 343834 每当我想在应用程序文件夹中运行一些 heroku 命
  • Git 将分支从一个远程推送到另一个远程?

    我设置了以下遥控器 git remote korg rorg 以及以下分支 git branch a no branch remotes korg gingerbread remotes korg gingerbread release r
  • 克隆/推送 Git Repos 时出错 443:访问错误,但未使用代理

    当使用 git 远程存储库进行这些操作克隆 推送时 我遇到了非常奇怪的问题 假设我正在尝试将更改推送到远程存储库 git push origin master 然后我会得到这个错误 致命 无法访问 Remote Repo 无法连接到 git
  • 删除 git Branch -a 列出的分支

    命令git branch a列出了一堆不在存储库上且不在本地分支上的分支 这些怎样才能删除呢 develop master remotes origin cloner 例如 remotes origin cloner曾经存在于存储库中 但它
  • Git在Windows中的克隆比在Linux中慢得多

    我一直在追寻 Windows 上 github 克隆速度极慢的问题 Linux kali 没有这个问题 我的下行连接速度为 100 40 megabit s 我可以获得接近 8mb s 的下载速度 没有问题 我已将电脑直接插入互联网插座 无
  • Gitlab-runner 更改 builds_dir

    我在生产服务器上的默认 builds dir 是 root builds qL8eZYTH 0 faramarzqoshchi testing gitlab runner 我希望它是这样的 home domain name public h

随机推荐

  • ReactJS 中的登录页面与单页应用程序 (SPA) 分离

    我正在 ReactJS 中开发一个单页面应用程序 SPA 我想知道如何在单独的页面中拥有登录页面 我在用create react app作为我的应用程序的基础 我目前正在定义 SPA 的模板App js文件 以及不同 js 文件中的每个组件
  • 验证错误后重定向到操作

    如果我有通常的 编辑 操作 则 GET 操作可以通过对象的 ID 检索对象并将其显示在编辑表单中 接下来 POST 获取 ViewModel 中的值并更新数据库中的对象 public virtual ActionResult Edit in
  • 基于深色模式的 Tailwind 颜色

    有没有办法在顺风配置中定义不同的颜色 以便在不使用深色模式的情况下应用深色模式dark选择器 目前我有一个像这样的对象 const colors light red 100 880808 dark red 100 red I d like只
  • 对数组数字(包括作为字符串的数字)求和的函数

    我有一个函数需要对数组中的所有数字求和 如果这些数字是字符串 1 2 该函数也需要对它们求和 我编写了一个函数并尝试解析数字 但它不起作用 基本上 它需要将所有数字相加 你能在不使用的情况下做到这一点吗reduce 我需要一个简单的解决方案
  • YUI Compressor Maven Mojo 缩小 javascript 的使用

    我在做一个struts2项目 使用maven来编译 我正在尝试缩小位于不同位置的 javascript 文件
  • JMeter 响应时间与线程图 - 数据点

    该图使用什么数据点 该图表示 TTFB 到第一个字节的时间 还是 TTLB 到最后一个字节的时间 以下是设置 该图表示 TTLB 到最后一个字节的时间 因为它使用 JMeter 的响应时间 如果你想要TTFB 第一个字节的时间 你需要使用L
  • 出现“无法对 Null 值调用此方法或属性”错误

    更新1 该行抛出异常 client group details Add new ClientGroupDetails 原问题 我有以下代码 我已将其从数据库中的 30 列数据精简为仅 2 列 每当任何列返回 NULL 值时 我都会收到错误
  • Kendo Grid 可以一直处于编辑模式吗?

    有谁知道剑道网格是否可以始终设置为编辑模式 我们不希望用户单击单元格或按钮来激活编辑模式 我们希望小部件始终显示并可用 有可能吗 除了使用批量编辑模式之外 您还可以尝试设置每列的模板并使用 MVVM 将输入元素绑定到数据项 grid ken
  • Android模拟器运行后如何获取序列号或ID?

    如果我在一台机器上运行多个带有 no window 选项的模拟器 命令 adb devices 显示 List of devices attached emulator 5554 device emulator 5556 device em
  • React,页面刷新后使用 useEffect 丢失 localStorage 中保存的数据[重复]

    这个问题在这里已经有答案了 这可能是一个菜鸟问题 但我遇到了一些麻烦useEffect 钩 我有一个记笔记应用程序 我想让数据持久保存 我用的是2useEffects 一个用于第一次刷新 加载页面时 另一个用于当我向应用程序添加新注释时 我
  • Struts2静态数据存储/访问

    我试图找到 静态 全局 的通常设计 方法是什么 Web 应用程序中的数据访问 存储 我使用的是 struts 2 背景 我有许多要在我的 Web 应用程序中显示的表格 问题1 这些表只会在服务器上每天更改和更新一次 我不想访问数据库 或为每
  • 如何从 Android Studio 构建产品风格?

    我在 build gradle 中定义了一些产品风格 我能够使用成功构建它们gradlew 我不知道如何从 Android Studio IDE 中执行此操作 我的项目最初是在 Eclipse 中完成的 后来我迁移到了 Android St
  • java.time 相当于 Joda-Time `withTimeAtStartOfDay`? (获取当天的第一时刻)

    In the 乔达时间 http www joda org joda time 图书馆 DateTime http www joda org joda time apidocs org joda time DateTime html类提供了
  • 在图书馆项目中链接 ThemeDictionaries

    我创建了2个ResourceDictionary 主题文件在Themes文件夹名为Light xaml and Dark xaml Added SolidColorBrush有名字BgColor在两个文件中
  • AJAX POST 到 MVC 控制器显示 302 错误

    我想在我的 MVC 视图中执行 AJAX POST 我写了以下内容 视图中的脚本代码 media search click function var data key search query val ajax type POST url
  • 如何从android中的超链接文本中删除下划线?

    我有 Button 及其文本 我从 string xml 检索它 即 我已经在 strings xml 的 res values 中声明了一个按钮文本 例如
  • 在 vb.net 中以不同用户身份运行新进程

    我目前正在使用一种自行开发的方法在 Vista 中以不同用户的身份运行一个进程 我无法摆脱这样的感觉 它是黑客式的且不太理想 除了它会导致 UAC 崩溃 使我的电脑崩溃 的感觉 应用程序出现安全异常 并迫使我完全禁用 UAC 我的流程由两个
  • GitHub Action:bash 脚本 grep 匹配失败,但在本地工作

    我正在编写一个 GitHub Action 在测试它时 我在让一个简单的 bash 脚本工作时遇到了很多麻烦 bash 脚本 https github com renatoathaydes setup java sdkman blob ma
  • VIM:是否可以在分割窗口中查看pdf文件?

    我想使用 gVim 在分割窗口中查看 pdf 文件 有谁知道这是否可行 如何 一些细节 我最近刚刚开始使用 vim 并用它来做笔记 同时阅读 pdf 我自己写笔记 但经常从 pdf 中复制文本 因此顺利复制会很好 目前我需要 alt tab
  • Mercurial 和 Git 中 JSLint 的预提交挂钩

    我想在提交到 Mercurial 或 Git 存储库之前运行 JSLint 我希望这是一个自动设置的步骤 而不是依赖开发人员 主要是我 记住事先运行 JSLint 我通常在开发时运行 JSLint 但希望在 JS 文件上指定一个契约 以便在