Use w3m for archiving

This commit is contained in:
David Eisinger
2024-01-17 12:04:56 -05:00
parent c5f0c6161a
commit ae64f3eb0a
80 changed files with 28830 additions and 29811 deletions

View File

@@ -1,105 +1,106 @@
#[1]Viget Articles
[1] Skip to Main Content
[2] Viget
IFRAME: [2]https://www.googletagmanager.com/ns.html?id=GTM-5V7V
[3]Skip to Main Content
[4]Viget
* [5]Work
* [6]Services
* [7]Articles
* [8]Careers
* [9]Contact
* (BUTTON) Open Menu
• [3] Work
• [4] Services
[5] Articles
• [6] Careers
[7] Contact
• Open Menu
Navigation
[10]Viget (BUTTON) Close
* Practice
* [11]Work
* [12]Services
* [13]Articles
[9] Viget Close
Were a full-service digital agency thats been helping clients make
lasting change since 1999.
[14]Contact Us
• Practice
• [11] Work
[12] Services
• [13] Articles
Were a full-service digital agency thats been helping clients make lasting
change since 1999.
[14] Contact Us
People
* [15]Company
* [16]Careers
* [17]Code of Ethics
* [18]Diversity & Inclusion
[15]Company
[16]Careers
[17]Code of Ethics
[18]Diversity & Inclusion
More
* [19]Pointless Corp.
* [20]Explorations
* [21]Code at Viget
[19]Pointless Corp.
[20]Explorations
[21]Code at Viget
Featured
Read the Article: Revolutionizing the Web
[22]
Read the Article: Revolutionizing the Web
Newsletter
Newsletter
Revolutionizing the Web
Read the Article: Elephants, Squirrels, Porcupines, and Zombies Can
Help Your Team Thrive
[23]
Read the Article: Elephants, Squirrels, Porcupines, and Zombies Can Help Your
Team Thrive
Article
Article
Elephants, Squirrels, Porcupines, and Zombies Can Help Your Team Thrive
Simple Commit Linting for Issue Number in GitHub Actions
[22]David Eisinger
[Git-Tips-030718]
[24] David Eisinger
[23]David Eisinger, Development Director
[25]David Eisinger, Development Director
Article Categories: [24]#Code, [25]#Tooling
Article Categories: [26] #Code, [27] #Tooling
Posted on April 28, 2023
* Share
* Share
* Post
Posted on April 28, 2023
Including relevant ticket numbers in your git commit messages is a gift
to your future self. Here's how to ensure you do it consistently.
• [28]
Share
• [29]
Share
• [30]
Post
I n c l u d i n g r e l e v a n t t i c k e t n u m b e r s i n y o u r
g i t c o m m i t m e s s a g e s i s a g i f t t o y o u r f u t u r e
s e l f . H e r e ' s h o w t o e n s u r e y o u d o i t c o n s i s t
e n t l y .
Including relevant ticket numbers in your git commit messages is a gift to your
future self. Here's how to ensure you do it consistently.
I don't believe there is a right way to do software; I think teams can
be effective (or ineffective!) in a lot of different ways using all
sorts of methodologies and technologies. But one hill upon which I will
die is this: referencing tickets in commit messages pays enormous
dividends over the long haul and you should always do it. As someone
who regularly commits code to apps created in the Obama era, nothing
warms my heart like running [26]:Git blame on some confusing code and
seeing a reference to a GitHub Issue where I can get the necessary
context. And, conversely, nothing sparks nerd rage like fix bug or PR
feedback or, heaven forbid, oops.
I n c l u d i n g r e l e v a n t t i c k e t n u m b e r s i n y o u r g i t c
o m m i t m e s s a g e s i s a g i f t t o y o u r f u t u r e s e l f . H e r
e ' s h o w t o e n s u r e y o u d o i t c o n s i s t e n t l y .
In a recent [27]project retrospective, the team identified that we
weren't being as consistent with this as we'd like, and decided to take
action. I figured some sort of commit linting would be a good candidate
for [28]continuous integration — when a team member pushes a branch up
to GitHub, check the commits and make sure they include a reference to
a ticket.
I don't believe there is a right way to do software; I think teams can be
effective (or ineffective!) in a lot of different ways using all sorts of
methodologies and technologies. But one hill upon which I will die is this:
referencing tickets in commit messages pays enormous dividends over the long
haul and you should always do it. As someone who regularly commits code to apps
created in the Obama era, nothing warms my heart like running [31]:Git blame on
some confusing code and seeing a reference to a GitHub Issue where I can get
the necessary context. And, conversely, nothing sparks nerd rage like fix bug
or PR feedback or, heaven forbid, oops.
In a recent [32]project retrospective, the team identified that we weren't
being as consistent with this as we'd like, and decided to take action. I
figured some sort of commit linting would be a good candidate for [33]
continuous integration — when a team member pushes a branch up to GitHub, check
the commits and make sure they include a reference to a ticket.
I looked into [34]commitlint, but I found it a lot more opinionated than I am —
I really just want to make sure commits begin with either [#XXX] (an issue
number) or [n/a] — and rather difficult to reconfigure. After struggling with
it for a few hours, I decided to just DIY it with a simple inline script. If
you just want something you can drop into a GitHub Actions YAML file to lint
your commits, here it is (but stick around and I'll break it down and then show
how to do it in a few other languages):
I looked into [29]commitlint, but I found it a lot more opinionated
than I am — I really just want to make sure commits begin with either
[#XXX] (an issue number) or [n/a] — and rather difficult to
reconfigure. After struggling with it for a few hours, I decided to
just DIY it with a simple inline script. If you just want something you
can drop into a GitHub Actions YAML file to lint your commits, here it
is (but stick around and I'll break it down and then show how to do it
in a few other languages):
steps:
- name: Checkout code
uses: actions/checkout@v3
@@ -121,24 +122,23 @@ Simple Commit Linting for Issue Number in GitHub Actions
end
'
A few notes:
* That fetch-depth: 0 is essential in order to be able to compare the
branch being built with main (or whatever you call your primary
development branch) — by default, your Action only knows about the
current branch.
* git log --format=format:%s HEAD ^origin/main is going to give you
the first line of every commit that's in the source branch but not
in main; those are the commits we want to lint.
* With that list of commits, we loop through each message and compare
it with the regular expression /^\[(#\d+|n\/a)\]/, i.e. does this
message begin with either [#XXX] (where X are digits) or [n/a]?
* If any message does not match, print an error out to standard error
(that's warn) and exit with a non-zero status (so that the GitHub
Action fails).
A few notes:
• That fetch-depth: 0 is essential in order to be able to compare the branch
being built with main (or whatever you call your primary development
branch) — by default, your Action only knows about the current branch.
git log --format=format:%s HEAD ^origin/main is going to give you the first
line of every commit that's in the source branch but not in main; those are
the commits we want to lint.
With that list of commits, we loop through each message and compare it with
the regular expression /^\[(#\d+|n\/a)\]/, i.e. does this message begin
with either [#XXX] (where X are digits) or [n/a]?
If any message does not match, print an error out to standard error (that's
warn) and exit with a non-zero status (so that the GitHub Action fails).
If you want to try this out locally (or perhaps modify the script to validate
messages in a different way), here's a docker run command you can use:
If you want to try this out locally (or perhaps modify the script to
validate messages in a different way), here's a docker run command you
can use:
echo '[#123] Message 1
[n/a] Message 2
[#122] Message 3' | docker run --rm -i ruby:3.2.1 ruby -e '
@@ -149,66 +149,64 @@ echo '[#123] Message 1
end
'
Note that running this command should output nothing since these are
all valid commit messages; modify one of the messages if you want to
see the failure state.
Note that running this command should output nothing since these are all valid
commit messages; modify one of the messages if you want to see the failure
state.
Other Languages [30]#
Other Languages [35]#
Since there's a very real possibility you might not otherwise install
Ruby in your GitHub Actions, and because I weirdly enjoy writing the
same code in a bunch of different languages, here are scripts for
several of Viget's other favorites:
Since there's a very real possibility you might not otherwise install Ruby in
your GitHub Actions, and because I weirdly enjoy writing the same code in a
bunch of different languages, here are scripts for several of Viget's other
favorites:
JavaScript [31]#
JavaScript [36]#
git log --format=format:%s HEAD ^origin/main | node -e "
let msgs = require('fs').readFileSync(0).toString().trim().split('\n');
for (let msg of msgs) {
if (msg.match(/^\[(#\d+|n\/a)\]/)) { continue; }
process.stderr.write('Commits must begin with [#XXX] or [n/a] (' + msg + ')'
);
process.stderr.write('Commits must begin with [#XXX] or [n/a] (' + msg + ')');
process.exit(1);
}
"
To test:
To test:
echo '[#123] Message 1
[n/a] Message 2
[#122] Message 3' | docker run --rm -i node:18.15.0 node -e "
let msgs = require('fs').readFileSync(0).toString().trim().split('\n');
for (let msg of msgs) {
if (msg.match(/^\[(#\d+|n\/a)\]/)) { continue; }
process.stderr.write('Commits must begin with [#XXX] or [n/a] (' + msg + ')'
);
process.stderr.write('Commits must begin with [#XXX] or [n/a] (' + msg + ')');
process.exit(1);
}
"
PHP [32]#
PHP [37]#
git log --format=format:%s HEAD ^origin/main | php -r '
while ($msg = fgets(STDIN)) {
if (preg_match("/^\[(#\d+|n\/a)\]/", $msg)) { continue; }
fwrite(STDERR, "Commits must begin with #[XXX] or [n/a] (" . trim($msg) . ")
\n");
fwrite(STDERR, "Commits must begin with #[XXX] or [n/a] (" . trim($msg) . ")\n");
exit(1);
}
'
To test:
To test:
echo '[#123] Message 1
[n/a] Message 2
[#122] Message 3' | docker run --rm -i php:8.2.4 php -r '
while ($msg = fgets(STDIN)) {
if (preg_match("/^\[(#\d+|n\/a)\]/", $msg)) { continue; }
fwrite(STDERR, "Commits must begin with #[XXX] or [n/a] (" . trim($msg) . ")
\n");
fwrite(STDERR, "Commits must begin with #[XXX] or [n/a] (" . trim($msg) . ")\n");
exit(1);
}
'
Python [33]#
Python [38]#
git log --format=format:%s HEAD ^origin/main | python -c '
import sys
@@ -216,12 +214,12 @@ import re
for msg in sys.stdin:
if re.match(r"^\[(#\d+|n\/a)\]", msg):
continue
print("Commits must begin with #[xxx] or [n/a] (%s)" % msg.strip(), file=sys
.stderr)
print("Commits must begin with #[xxx] or [n/a] (%s)" % msg.strip(), file=sys.stderr)
sys.exit(1)
'
To test:
To test:
echo '[#123] Message 1
[n/a] Message 2
[#122] Message 3' | docker run --rm -i python:3.11.3 python -c '
@@ -230,196 +228,207 @@ import re
for msg in sys.stdin:
if re.match(r"^\[(#\d+|n\/a)\]", msg):
continue
print("Commits must begin with #[xxx] or [n/a] (%s)" % msg.strip(), file=sys
.stderr)
print("Commits must begin with #[xxx] or [n/a] (%s)" % msg.strip(), file=sys.stderr)
sys.exit(1)
'
__________________________________________________________________
So there you have it: simple GitHub Actions commit linting in most of
Viget's favorite languages (try as I might, I could not figure out how
to do this in [34]Elixir, at least not in a concise way). As I said up
front, writing good tickets and then referencing them in commit
messages so that they can easily be surfaced with git blame pays huge
dividends over the life of a codebase. If you're not already in the
habit of doing this, well, the best time to start was Initial commit,
but the second best time is today.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[35]David Eisinger
So there you have it: simple GitHub Actions commit linting in most of Viget's
favorite languages (try as I might, I could not figure out how to do this in
[39]Elixir, at least not in a concise way). As I said up front, writing good
tickets and then referencing them in commit messages so that they can easily be
surfaced with git blame pays huge dividends over the life of a codebase. If
you're not already in the habit of doing this, well, the best time to start was
Initial commit, but the second best time is today.
[36]David is Viget's managing development director. From our Durham,
NC, office, he builds high-quality, forward-thinking software for PUMA,
the World Wildlife Fund, NFLPA, and many others.
[37]More articles by David
[40] David Eisinger
[41]David is Viget's managing development director. From our Durham, NC,
office, he builds high-quality, forward-thinking software for PUMA, the World
Wildlife Fund, NFLPA, and many others.
[42]More articles by David
Related Articles
* Thoughts on Remix
Article
• [43]
Thoughts on Remix
Thoughts on Remix
Solomon Hawk
* Going Headless in 2024: A View of the Headless CMS Landscape
Article
Article
Going Headless in 2024: A View of the Headless CMS Landscape
Andrew Mosby
* Maintenance Matters: Good Tests
Article
Thoughts on Remix
Maintenance Matters: Good Tests
David Eisinger
Solomon Hawk
• [44]
Going Headless in 2024: A View of the Headless CMS Landscape
Article
Going Headless in 2024: A View of the Headless CMS Landscape
Andrew Mosby
• [45]
Maintenance Matters: Good Tests
Article
Maintenance Matters: Good Tests
David Eisinger
The Viget Newsletter
Nobody likes popups, so we waited until now to recommend our
newsletter, featuring thoughts, opinions, and tools for building a
better digital world. [38]Read the current issue.
Nobody likes popups, so we waited until now to recommend our newsletter,
featuring thoughts, opinions, and tools for building a better digital world.
[46]Read the current issue.
[39]Subscribe Here (opens in new window)
[47]Subscribe Here (opens in new window)
Site Footer
Have an unsolvable problem or audacious idea?
Have an unsolvable problem or audacious idea?
Lets get to work
[40]Contact Us [41]hello@viget.com [42]703.891.0670
Lets get to work
* Practice
* [43]Work
* [44]Services
* [45]Articles
[48] Contact Us [49] hello@viget.com [50] 703.891.0670
* People
* [46]Company
* [47]Careers
* [48]Code of Ethics
* [49]Diversity & Inclusion
• Practice
• [51]Work
• [52]Services
• [53]Articles
* More
* [50]Pointless Corp.
* [51]Explorations
* [52]Code at Viget
• People
• [54]Company
• [55]Careers
[56]Code of Ethics
• [57]Diversity & Inclusion
• More
• [58]Pointless Corp.
• [59]Explorations
• [60]Code at Viget
Sign Up For Our Newsletter
A curated periodical featuring thoughts, opinions, and tools for
building a better digital world.
[53]Check it out
A curated periodical featuring thoughts, opinions, and tools for building a
better digital world.
[61] Check it out
Social Links
[54]Viget
*
*
*
*
*
*
[62] Viget
• [63]
• [64]
• [65]
• [66]
• [67]
• [68]
Office Locations
* [55]Washington DC Metro
* [56]Durham, NC
* [57]Boulder, CO
* [58]Chattanooga, TN
• [69]Washington DC Metro
• [70]Durham, NC
• [71]Boulder, CO
• [72]Chattanooga, TN
© 1999 2024 Viget Labs, LLC. [59]Terms [60]Privacy [61]MRF
© 1999 2024 Viget Labs, LLC. [73]Terms [74]Privacy [75]MRF
* [62]Home
* [63]Articles
* [64]Simple Commit Linting for Issue Number in GitHub Actions
• [76]Home
• [77]Articles
• [78]Simple Commit Linting for Issue Number in GitHub Actions
[65]Subscribe (opens in a new window)
(BUTTON) Share
* [66]Share this page
* [67]Share this page
* [68]Post this page
[79] Subscribe (opens in a new window)
Share
References
• [81] Share this page
• [82] Share this page
• [83] Post this page
Visible links:
1. https://feeds.feedburner.com/Viget
2. https://www.googletagmanager.com/ns.html?id=GTM-5V7V
3. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#content
4. https://www.viget.com/
5. https://www.viget.com/work/
6. https://www.viget.com/services/
7. https://www.viget.com/articles/
8. https://www.viget.com/careers/
9. https://www.viget.com/contact/
10. https://www.viget.com/
11. https://www.viget.com/work/
12. https://www.viget.com/services/
13. https://www.viget.com/articles/
14. https://www.viget.com/contact/
15. https://www.viget.com/about/
16. https://www.viget.com/careers/
17. https://www.viget.com/code-of-ethics/
18. https://www.viget.com/diversity-equity-and-inclusion/
19. https://pointlesscorp.com/
20. https://explorations.viget.com/
21. https://code.viget.com/
22. https://www.viget.com/about/team/deisinger/
23. https://www.viget.com/about/team/deisinger/
24. https://www.viget.com/articles/category/code/
25. https://www.viget.com/articles/category/tooling/
26. https://github.com/tpope/vim-fugitive#fugitivevim
27. https://www.viget.com/articles/get-the-most-out-of-your-internal-retrospectives/
28. https://www.viget.com/articles/maintenance-matters-continuous-integration/
29. https://commitlint.js.org/
30. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#other-languages
31. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#javaScript
32. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#php
33. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#python
34. https://elixir-lang.org/
35. https://www.viget.com/about/team/deisinger/
36. https://www.viget.com/about/team/deisinger/
37. https://www.viget.com/about/team/deisinger/
38. https://www.viget.com/newsletter
39. http://eepurl.com/gtHqsj
40. https://www.viget.com/contact/
41. mailto:hello@viget.com?subject=Hello, Viget!
42. tel:7038910670
43. https://www.viget.com/work/
44. https://www.viget.com/services/
45. https://www.viget.com/articles/
46. https://www.viget.com/about/
47. https://www.viget.com/careers/
48. https://www.viget.com/code-of-ethics/
49. https://www.viget.com/diversity-equity-and-inclusion/
50. https://pointlesscorp.com/
51. https://explorations.viget.com/
52. https://code.viget.com/
53. https://www.viget.com/newsletter/
54. https://www.viget.com/
55. https://www.viget.com/dc-metro-hq/
56. https://www.viget.com/durham/
57. https://www.viget.com/boulder/
58. https://www.viget.com/chattanooga/
59. https://www.viget.com/terms-conditions/
60. https://www.viget.com/privacy-policy/
61. https://individual.carefirst.com/individuals-families/mandates-policies/machine-readable-file.page
62. https://www.viget.com/
63. https://www.viget.com/articles
64. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#hero
65. http://eepurl.com/gtHqsj
66. https://www.facebook.com/sharer/sharer.php?u=https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/
67. http://www.linkedin.com/shareArticle?mini=true&url=https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/
68. https://x.com/intent/tweet?text=Including relevant ticket numbers in your git commit messages is a gift to your future self. Here's how to ensure you do it consistently. https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/
Hidden links:
70. https://www.viget.com/newsletter/revolutionizing-the-web/
71. https://www.viget.com/articles/elephants-squirrels-porcupines-and-zombies-can-help-your-team-thrive/
72. https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
73. http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
74. https://x.com/intent/tweet?text=Including%20relevant%20ticket%20numbers%20in%20your%20git%20commit%20messages%20is%20a%20gift%20to%20your%20future%20self.%20Here%27s%20how%20to%20ensure%20you%20do%20it%20consistently.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
75. https://www.viget.com/articles/thoughts-on-remix/
76. https://www.viget.com/articles/a-view-of-the-headless-cms-landscape/
77. https://www.viget.com/articles/maintenance-matters-good-tests/
78. http://x.com/viget
79. https://github.com/vigetlabs
80. https://dribbble.com/viget
81. https://www.instagram.com/viget/
82. https://www.linkedin.com/company/viget-labs
83. https://vimeo.com/viget/collections
References:
[1] https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#content
[2] https://www.viget.com/
[3] https://www.viget.com/work/
[4] https://www.viget.com/services/
[5] https://www.viget.com/articles/
[6] https://www.viget.com/careers/
[7] https://www.viget.com/contact/
[9] https://www.viget.com/
[11] https://www.viget.com/work/
[12] https://www.viget.com/services/
[13] https://www.viget.com/articles/
[14] https://www.viget.com/contact/
[15] https://www.viget.com/about/
[16] https://www.viget.com/careers/
[17] https://www.viget.com/code-of-ethics/
[18] https://www.viget.com/diversity-equity-and-inclusion/
[19] https://pointlesscorp.com/
[20] https://explorations.viget.com/
[21] https://code.viget.com/
[22] https://www.viget.com/newsletter/revolutionizing-the-web/
[23] https://www.viget.com/articles/elephants-squirrels-porcupines-and-zombies-can-help-your-team-thrive/
[24] https://www.viget.com/about/team/deisinger/
[25] https://www.viget.com/about/team/deisinger/
[26] https://www.viget.com/articles/category/code/
[27] https://www.viget.com/articles/category/tooling/
[28] https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
[29] http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
[30] https://x.com/intent/tweet?text=Including%20relevant%20ticket%20numbers%20in%20your%20git%20commit%20messages%20is%20a%20gift%20to%20your%20future%20self.%20Here%27s%20how%20to%20ensure%20you%20do%20it%20consistently.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
[31] https://github.com/tpope/vim-fugitive#fugitivevim
[32] https://www.viget.com/articles/get-the-most-out-of-your-internal-retrospectives/
[33] https://www.viget.com/articles/maintenance-matters-continuous-integration/
[34] https://commitlint.js.org/
[35] https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#other-languages
[36] https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#javaScript
[37] https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#php
[38] https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#python
[39] https://elixir-lang.org/
[40] https://www.viget.com/about/team/deisinger/
[41] https://www.viget.com/about/team/deisinger/
[42] https://www.viget.com/about/team/deisinger/
[43] https://www.viget.com/articles/thoughts-on-remix/
[44] https://www.viget.com/articles/a-view-of-the-headless-cms-landscape/
[45] https://www.viget.com/articles/maintenance-matters-good-tests/
[46] https://www.viget.com/newsletter
[47] http://eepurl.com/gtHqsj
[48] https://www.viget.com/contact/
[49] mailto:hello@viget.com?subject=Hello%2C%20Viget%21
[50] tel:7038910670
[51] https://www.viget.com/work/
[52] https://www.viget.com/services/
[53] https://www.viget.com/articles/
[54] https://www.viget.com/about/
[55] https://www.viget.com/careers/
[56] https://www.viget.com/code-of-ethics/
[57] https://www.viget.com/diversity-equity-and-inclusion/
[58] https://pointlesscorp.com/
[59] https://explorations.viget.com/
[60] https://code.viget.com/
[61] https://www.viget.com/newsletter/
[62] https://www.viget.com/
[63] http://x.com/viget
[64] https://github.com/vigetlabs
[65] https://dribbble.com/viget
[66] https://www.instagram.com/viget/
[67] https://www.linkedin.com/company/viget-labs
[68] https://vimeo.com/viget/collections
[69] https://www.viget.com/dc-metro-hq/
[70] https://www.viget.com/durham/
[71] https://www.viget.com/boulder/
[72] https://www.viget.com/chattanooga/
[73] https://www.viget.com/terms-conditions/
[74] https://www.viget.com/privacy-policy/
[75] https://individual.carefirst.com/individuals-families/mandates-policies/machine-readable-file.page
[76] https://www.viget.com/
[77] https://www.viget.com/articles
[78] https://www.viget.com/articles/simple-commit-linting-for-issue-number-in-github-actions/#hero
[79] http://eepurl.com/gtHqsj
[81] https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
[82] http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F
[83] https://x.com/intent/tweet?text=Including%20relevant%20ticket%20numbers%20in%20your%20git%20commit%20messages%20is%20a%20gift%20to%20your%20future%20self.%20Here%27s%20how%20to%20ensure%20you%20do%20it%20consistently.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fsimple-commit-linting-for-issue-number-in-github-actions%2F