This is a well put together list. One thing that frustrates me is that not all tooling respects mailmap. IntelliJ has an open feature/bug request for integrating mailmap into its git functionality. Additionally, the .git-blame-ignore-revs is more of a convention because you still have to manually configure that to be the file name to use.
> GitHub, GitLab, and Gitea all respect .gitignore and won’t show ignored files in the web UI
Is this right? These tools don't show ignored files because they aren't part of the repository. If a now-ignored file has made it into the repository, surely you want to see it?
I'd like to emphasize the `.git/info/exclude`, which is a "repo-local gitignore", i.e. only for you and only for this repo.
Useful when you want to create a temporary file to help you e.g. with a bug investigation, and make sure it stays untouched while you switch branches, and to avoid accidentally committing it.
Since using jj I'm on the lookout for some kind of setting that will exclude the .jj folder from the repo _and_ any operation including git clean, without having to add it to the repo. I.e., make it completely invisible to git including `git clean -xdf`!
At the moment I'm making do with aliasing `git clean -e .jj`
This strikes me as a bad idea. Which side of the merge is “ours” and which ond is “theirs” during merges or rebases is something of a crapshoot[1], so this kind of setting only makes sense when merge conflicts are only ever discovered and resolved by automatic tooling (e.g. the git-annex branch[2] in git-annex-enabled repos).
.git/hooks is underrated. I have a pre-push hook that runs my test suite — annoying to set up the first time but I've probably avoided a dozen broken CI runs by now.
gitlint (linked in the article, https://jorisroovers.com/gitlint/) is a really cool project that we use extensively (and in CI) to ensure we do not accidentally merge "!fixup"/"!squash" commits into master.
Only tangential, but I recently discovered that VS Code also picks up paths in `.ignore` to decided whether to include paths in search. I knew that `.gitignore` is automatically picked up, but was surprised when all of a sudden directories that weren't supposed to show up in file search started showing up -- it's because I had unignored them in `.ignore` for ripgrep. Makes sense I suppose.
>global ignore file at ~/.config/git/ignore or wherever core.excludesFile points
Most mentions I see of `core.excludesFile` refer to it as a global, but it could also be a local file. I use it as a local file since for some projects I'm working on I end up having a set of scripts/logs/anything specific to the repository that I don't want to be in the `.gitignore`.
The article mentions .gitattributes but does not mention a super useful property you can put in that file: you can use it to specify that part of your repo should not end up on a production server. We have this line in our .gitattributes:
/test export-ignore
That means that when a "git export" happens from git to our production server it skips all test files. (In our case Capistrano does that, no additional configuration needed.) You never want test files on a production server and it saves disk space to boot. Normal usage is not affected, in development or testing you would always do a "git pull" or similar.
Score Breakdown
ND
PreamblePreamble
Content is technical documentation about git configuration files. No observable alignment or misalignment with UDHR preamble principles of human dignity, equality, or fundamental freedoms.
ND
Article 1Freedom, Equality, Brotherhood
Article addresses equal rights and freedom. Content concerns git technical configuration with no observable signals regarding equal treatment, dignity, or non-discrimination.
ND
Article 2Non-Discrimination
Article prohibits discrimination. Content is technical documentation; no observable signals of discriminatory practices, exclusion, or differential treatment.
ND
Article 3Life, Liberty, Security
Article addresses right to life, liberty, and security. Content concerns git configuration with no observable signals addressing personal security, liberty, or life.
ND
Article 4No Slavery
Article prohibits slavery. Content is technical documentation; no observable signals regarding forced labor or servitude.
ND
Article 5No Torture
Article prohibits torture and inhuman treatment. Content concerns git technical configuration; no observable signals addressing torture, abuse, or cruel treatment.
ND
Article 6Legal Personhood
Article addresses right to legal personhood. Content is technical documentation; no observable signals regarding legal status or personhood.
ND
Article 7Equality Before Law
Article ensures equal protection under law. Content concerns git configuration; no observable signals regarding legal protection or equality before law.
ND
Article 8Right to Remedy
Article addresses right to legal remedy. Content is technical documentation; no observable signals regarding access to justice or remedies.
ND
Article 9No Arbitrary Detention
Article prohibits arbitrary arrest and detention. Content concerns git configuration files; no observable signals regarding arrest, detention, or arbitrariness.
ND
Article 10Fair Hearing
Article ensures fair and public hearing. Content is technical documentation; no observable signals regarding judicial process or fair trial.
ND
Article 11Presumption of Innocence
Article addresses criminal responsibility and presumption of innocence. Content concerns git technical configuration; no observable signals regarding criminal law or judicial proceedings.
ND
Article 12Privacy
Article protects privacy, family, home, and correspondence. Content is technical documentation about git configuration; no observable signals regarding privacy protection or family matters.
ND
Article 13Freedom of Movement
Article addresses freedom of movement and residence. Content concerns git configuration files; no observable signals regarding movement rights or residence.
ND
Article 14Asylum
Article addresses asylum and protection from persecution. Content is technical documentation; no observable signals regarding asylum, refuge, or persecution.
ND
Article 15Nationality
Article addresses right to nationality. Content concerns git configuration; no observable signals regarding nationality, citizenship, or national allegiance.
ND
Article 16Marriage & Family
Article addresses marriage and family rights. Content is technical documentation about git files; no observable signals regarding marriage, family, or spousal relations.
ND
Article 17Property
Article addresses right to property and against arbitrary deprivation. Content concerns git configuration; no observable signals regarding property rights or expropriation.
ND
Article 18Freedom of Thought
Article addresses freedom of thought, conscience, and religion. Content is technical documentation; no observable signals regarding religious freedom, conscience, or belief.
+0.16
Article 19Freedom of Expression
Medium F: Content facilitates information sharing through documentation of git configuration systems that enable collaborative development and transparent code management
Editorial
+0.20
Structural
+0.10
SETL
+0.14
Combined
ND
Context Modifier
ND
Article 19 protects freedom of opinion and expression, including seeking/receiving information. Content indirectly supports this by documenting tools (.gitignore, .gitattributes, .mailmap, etc.) that enable collaborative communication and transparency in software development. The discussion of how these files travel with code and affect how information is treated shows mild positive framing toward open communication practices. Structural support is minimal—content is informational only, not implementing systems that directly enable expression.
ND
Article 20Assembly & Association
Article addresses freedom of peaceful assembly and association. Content is technical documentation about git configuration files; no observable signals regarding assembly, protest, or association rights.
ND
Article 21Political Participation
Article addresses political participation and democratic governance. Content concerns git configuration; no observable signals regarding political rights, voting, or democratic participation.
ND
Article 22Social Security
Article addresses right to social security and work-related protection. Content is technical documentation; no observable signals regarding employment rights, social security, or labor protections.
+0.13
Article 23Work & Equal Pay
Low F: Documentation promotes equitable access to technical knowledge and tool configuration that developers use in work
Editorial
+0.15
Structural
+0.10
SETL
+0.09
Combined
ND
Context Modifier
ND
Article 23 protects work-related rights including fair wages, favorable conditions, and right to organize. Content provides technical documentation that enables developers to work effectively using git tools. The mention of standardizing configurations across teams, automating setup, and reducing developer friction shows mild indirect support for equitable work practices. However, content does not directly address labor rights, compensation, or organization.
ND
Article 24Rest & Leisure
Article addresses right to rest and leisure. Content is technical documentation about git configuration; no observable signals regarding rest periods, working hours, or leisure time.
ND
Article 25Standard of Living
Article addresses right to adequate standard of living including food, clothing, housing, medical care. Content concerns git configuration files; no observable signals regarding material welfare or health.
+0.21
Article 26Education
Medium F: Content provides educational material about technical systems, democratizing access to specialized knowledge A: Advocacy for standardized, documented, accessible development practices
Editorial
+0.25
Structural
+0.15
SETL
+0.16
Combined
ND
Context Modifier
ND
Article 26 addresses right to education and development of human personality. Content is educational material that explains technical concepts in accessible prose, enabling readers to understand and use git configuration systems. The emphasis on documentation, standards, shared configurations, and reducing barriers (e.g., 'everyone working on the repo uses the same settings') shows mild positive framing toward equitable knowledge sharing and technical education. Structural support is moderate—content exists as freely accessible education.
+0.18
Article 27Cultural Participation
Medium F: Content discusses attribution (.mailmap), protection of creative works (file attributes), and intellectual property considerations P: Documentation supports developers in protecting and managing their creative contributions
Editorial
+0.20
Structural
+0.15
SETL
+0.10
Combined
ND
Context Modifier
ND
Article 27 protects rights to participate in cultural/scientific life and share in benefits of intellectual property. Content discusses .mailmap for attributing authorship and .gitattributes for marking authorship of contributions, which directly relates to author attribution and credit. Discussion of language detection overrides and marking generated/vendored code shows awareness of intellectual property boundaries. However, content does not directly address copyright protection or moral rights.
ND
Article 28Social & International Order
Article addresses right to social/international order that realizes rights in the Declaration. Content is technical documentation; no observable signals regarding systemic rights protections or international order.
ND
Article 29Duties to Community
Article addresses duties to community and limitations on rights. Content concerns git configuration files; no observable signals regarding community responsibilities or limitations on freedoms.
ND
Article 30No Destruction of Rights
Article prohibits interpreting the Declaration to destroy rights or freedoms. Content is technical documentation; no observable signals regarding misuse or destruction of rights.