You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<
5593
script type="application/json" data-target="react-app.embeddedData">{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":"benchmarks","path":"benchmarks","contentType":"directory"},{"name":"css","path":"css","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"i18n","path":"i18n","contentType":"directory"},{"name":"images","path":"images","contentType":"directory"},{"name":"lib","path":"lib","contentType":"directory"},{"name":"logs","path":"logs","contentType":"directory"},{"name":"scripts","path":"scripts","contentType":"directory"},{"name":"src","path":"src","contentType":"directory"},{"name":"test","path":"test","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".jscsrc","path":".jscsrc","contentType":"file"},{"name":".jshintignore","path":".jshintignore","contentType":"file"},{"name":".jshintrc","path":".jshintrc","contentType":"file"},{"name":".jshintrc-base","path":".jshintrc-base","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"Gruntfile.js","path":"Gruntfile.js","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.closure.md","path":"README.closure.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"TRIAGING.md","path":"TRIAGING.md","contentType":"file"},{"name":"angularFiles.js","path":"angularFiles.js","contentType":"file"},{"name":"bower.json","path":"bower.json","contentType":"file"},{"name":"changelog.js","path":"changelog.js","contentType":"file"},{"name":"changelog.spec.js","path":"changelog.spec.js","contentType":"file"},{"name":"check-size.sh","path":"check-size.sh","contentType":"file"},{"name":"compare-master-to-stable.js","path":"compare-master-to-stable.js","contentType":"file"},{"name":"gdocs.js","path":"gdocs.js","contentType":"file"},{"name":"init-repo.sh","path":"init-repo.sh","contentType":"file"},{"name":"jenkins_build.sh","path":"jenkins_build.sh","contentType":"file"},{"name":"karma-docs.conf.js","path":"karma-docs.conf.js","contentType":"file"},{"name":"karma-jqlite.conf.js","path":"karma-jqlite.conf.js","contentType":"file"},{"name":"karma-jquery.conf.js","path":"karma-jquery.conf.js","contentType":"file"},{"name":"karma-modules.conf.js","path":"karma-modules.conf.js","contentType":"file"},{"name":"karma-shared.conf.js","path":"karma-shared.conf.js","contentType":"file"},{"name":"npm-shrinkwrap.clean.json","path":"npm-shrinkwrap.clean.json","contentType":"file"},{"name":"npm-shrinkwrap.json","path":"npm-shrinkwrap.json","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"protractor-conf.js","path":"protractor-conf.js","contentType":"file"},{"name":"protractor-jenkins-conf.js","path":"protractor-jenkins-conf.js","contentType":"file"},{"name":"protractor-shared-conf.js","path":"protractor-shared-conf.js","contentType":"file"},{"name":"protractor-travis-conf.js","path":"protractor-travis-conf.js","contentType":"file"},{"name":"validate-commit-msg.js","path":"validate-commit-msg.js","contentType":"file"},{"name":"validate-commit-msg.spec.js","path":"validate-commit-msg.spec.js","contentType":"file"}],"totalCount":47}},"fileTreeProcessingTime":11.782973,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":51583874,"defaultBranch":"master","name":"angular.js","ownerLogin":"remy","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2016-02-12T11:38:09.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/13700?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"copy-perf","listCacheKey":"v0:1613553053.135194","canEdit":false,"refType":"branch","currentOid":"a9ecde1e33c1f6acfa07bc795c066651d6a36634"},"path":"validate-commit-msg.js","currentUser":null,"blob":{"rawLines":["#!/usr/bin/env node","","/**"," * Git COMMIT-MSG hook for validating commit message"," * See https://docs.google.com/document/d/1rk04jEuGfk9kYzfqCuOlPTSJw3hEDZJTBN5E5f1SALo/edit"," *"," * Installation:"," * \u003e\u003e cd \u003cangular-repo\u003e"," * \u003e\u003e ln -s ../../validate-commit-msg.js .git/hooks/commit-msg"," */","","'use strict';","","var fs = require('fs');","var util = require('util');","","","var MAX_LENGTH = 100;","var PATTERN = /^(?:fixup!\\s*)?(\\w*)(\\(([\\w\\$\\.\\*/-]*)\\))?\\: (.*)$/;","var IGNORED = /^WIP\\:/;","var TYPES = {"," feat: true,"," fix: true,"," docs: true,"," style: true,"," refactor: true,"," perf: true,"," test: true,"," chore: true,"," revert: true","};","","","var error = function() {"," // gitx does not display it"," // http://gitx.lighthouseapp.com/projects/17830/tickets/294-feature-display-hook-error-message-when-hook-fails"," // https://groups.google.com/group/gitx/browse_thread/thread/a03bcab60844b812"," console.error('INVALID COMMIT MSG: ' + util.format.apply(null, arguments));","};","","","var validateMessage = function(message) {"," var isValid = true;",""," if (IGNORED.test(message)) {"," console.log('Commit message validation ignored.');"," return true;"," }",""," if (message.length \u003e MAX_LENGTH) {"," error('is longer than %d characters !', MAX_LENGTH);"," isValid = false;"," }",""," var match = PATTERN.exec(message);",""," if (!match) {"," error('does not match \"\u003ctype\u003e(\u003cscope\u003e): \u003csubject\u003e\" ! was: ' + message);"," return false;"," }",""," var type = match[1];"," var scope = match[3];"," var subject = match[4];",""," if (!TYPES.hasOwnProperty(type)) {"," error('\"%s\" is not allowed type !', type);"," return false;"," }",""," // Some more ideas, do want anything like this ?"," // - allow only specific scopes (eg. fix(docs) should not be allowed ?"," // - auto correct the type to lower case ?"," // - auto correct first letter of the subject to lower case ?"," // - auto add empty line after subject ?"," // - auto remove empty () ?"," // - auto correct typos in type ?"," // - store incorrect messages, so that we can learn",""," return isValid;","};","","","var firstLineFromBuffer = function(buffer) {"," return buffer.toString().split('\\n').shift();","};","","","","// publish for testing","exports.validateMessage = validateMessage;","","// hacky start if not run by jasmine :-D","if (process.argv.join('').indexOf('jasmine-node') === -1) {"," var commitMsgFile = process.argv[2];"," var incorrectLogFile = commitMsgFile.replace('COMMIT_EDITMSG', 'logs/incorrect-commit-msgs');",""," fs.readFile(commitMsgFile, function(err, buffer) {"," var msg = firstLineFromBuffer(buffer);",""," if (!validateMessage(msg)) {"," fs.appendFile(incorrectLogFile, msg + '\\n', function() {"," process.exit(1);"," });"," } else {"," process.exit(0);"," }"," });","}"],"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/remy/angular.js/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"validate-commit-msg.js","displayUrl":"https://github.com/remy/angular.js/blob/copy-perf/validate-commit-msg.js?raw=true","headerInfo":{"blobSize":"2.61 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"f0c23fd","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fremy%2Fangular.js%2Fblob%2Fcopy-perf%2Fvalidate-commit-msg.js","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"109","truncatedSloc":"84"},"mode":"executable file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"JavaScript","languageID":183,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/remy/angular.js/blob/copy-perf/validate-commit-msg.js","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/remy/angular.js/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/remy/angular.js/raw/refs/heads/copy-perf/validate-commit-msg.js","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":2,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"error","kind":"function","ident_start":620,"ident_end":625,"extent_start":620,"extent_end":943,"fully_qualified_name":"error","ident_utf16":{"start":{"line_number":33,"utf16_col":4},"end":{"line_number":33,"utf16_col":9}},"extent_utf16":{"start":{"line_number":33,"utf16_col":4},"end":{"line_number":38,"utf16_col":1}}},{"name":"validateMessage","kind":"function","ident_start":951,"ident_end":966,"extent_start":951,"extent_end":1990,"fully_qualified_name":"validateMessage","ident_utf16":{"start":{"line_number":41,"utf16_col":4},"end":{"line_number":41,"utf16_col":19}},"extent_utf16":{"start":{"line_number":41,"utf16_col":4},"end":{"line_number":80,"utf16_col":1}}},{"name":"firstLineFromBuffer","kind":"function","ident_start":1998,"ident_end":2017,"extent_start":1998,"extent_end":2088,"fully_qualified_name":"firstLineFromBuffer","ident_utf16":{"start":{"line_number":83,"utf16_col":4},"end":{"line_number":83,"utf16_col":23}},"extent_utf16":{"start":{"line_number":83,"utf16_col":4},"end":{"line_number":85,"utf16_col":1}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/remy/angular.js/branches":{"post":"jgfjRLc2B8VUIumqA8UBE2LdY69EitGPpaVFgDPuw0kiDvNtsRQoPps9O3myCUcKxJ4V499DEvrNHPL-DycKhQ"},"/repos/preferences":{"post":"FZQHYiDoXf9Oz1dZHa4f2jPwAgqeDl7pdII4ikpUQEq2OI9rbvyc1O0dErhEKgRCjKjmHcPNqOz_pMcMzbgPcg"}}},"title":"angular.js/validate-commit-msg.js at copy-perf · remy/angular.js","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}