# Commit

Published articles for Commit.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## 【etcd】bbolt 后端：mmap、batch 与单写者约束

DevFeed: [【etcd】bbolt 后端：mmap、batch 与单写者约束](<https://devfeed.tech/articles/etcd-bbolt-mmap-batch-33987.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/05-bbolt-backend/05-bbolt-backend.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Raft](<https://devfeed.tech/topics/raft.md>)

Tags: [apply](<https://devfeed.tech/tags/apply.md>), [backend](<https://devfeed.tech/tags/backend.md>), [batch](<https://devfeed.tech/tags/batch.md>), [bbolt](<https://devfeed.tech/tags/bbolt.md>), [commit](<https://devfeed.tech/tags/commit.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mmap](<https://devfeed.tech/tags/mmap.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>)

### AI overview

This article explains how etcd v3.5.33 maps its MVCC storage model onto the bbolt backend. It covers bucket layout, mmap behavior, buffered batch commits, read and write transaction concurrency, and how bbolt's single-writer constraint shapes apply and linearizable reads.

### Source excerpt

钉清 etcd v3.5.33 的 bbolt 后端：bucket 布局、mmap 预映射、100ms/10000 条 batch commit、ConcurrentReadTx 与单写者如何约束 MVCC 读写并发。

## 【etcd】treeIndex 与 Apply 管道：propose -\> commit -\> apply

DevFeed: [【etcd】treeIndex 与 Apply 管道：propose -\> commit -\> apply](<https://devfeed.tech/articles/etcd-treeindex-apply-propose-commit-apply-33988.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/06-apply-pipeline/06-apply-pipeline.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [applied-index](<https://devfeed.tech/tags/applied-index.md>), [apply](<https://devfeed.tech/tags/apply.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bbolt](<https://devfeed.tech/tags/bbolt.md>), [commit](<https://devfeed.tech/tags/commit.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [index](<https://devfeed.tech/tags/index.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [range](<https://devfeed.tech/tags/range.md>), [recovery](<https://devfeed.tech/tags/recovery.md>), [revision](<https://devfeed.tech/tags/revision.md>), [store](<https://devfeed.tech/tags/store.md>), [treeindex](<https://devfeed.tech/tags/treeindex.md>), [txn](<https://devfeed.tech/tags/txn.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This tutorial explains the etcd v3.5.33 apply pipeline from Raft commit to MVCC application. It covers the separation between propose, commit, and apply; the roles of treeIndex and bbolt; consistent-index updates; watch notification timing; and troubleshooting committed-versus-applied lag.

### Source excerpt

走读 etcd v3.5.33 从 Raft commit 到 MVCC apply 的串行管道：treeIndex 与 bbolt 分工、consistent index、watchableStore 通知触发点，以及 committed/applied 分列排障。

## 【etcd】单 Raft 组与服务器角色：Leader、Follower、Learner 与 request 路由

DevFeed: [【etcd】单 Raft 组与服务器角色：Leader、Follower、Learner 与 request 路由](<https://devfeed.tech/articles/etcd-raft-leader-follower-learner-request-33984.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/02-single-raft/02-single-raft.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: article

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [apply](<https://devfeed.tech/tags/apply.md>), [atomic](<https://devfeed.tech/tags/atomic.md>), [commit](<https://devfeed.tech/tags/commit.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [etcdserver](<https://devfeed.tech/tags/etcdserver.md>), [follower](<https://devfeed.tech/tags/follower.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [leader](<https://devfeed.tech/tags/leader.md>), [learner](<https://devfeed.tech/tags/learner.md>), [linearizable](<https://devfeed.tech/tags/linearizable.md>), [raft](<https://devfeed.tech/tags/raft.md>), [request](<https://devfeed.tech/tags/request.md>), [single-raft-group](<https://devfeed.tech/tags/single-raft-group.md>), [v3](<https://devfeed.tech/tags/v3.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This article explains how etcd v3.5.33 embeds a single Raft group, separates EtcdServer responsibilities from the Raft library, and routes requests across Leader, Follower, and Learner roles. It covers gRPC write forwarding, linearizable and serializable reads, and the handling of watch, lease, and mutating requests.

### Source excerpt

钉清 etcd v3.5.33 单 Raft 组拓扑、EtcdServer 与 go.etcd.io/raft/v3 边界、Leader/Follower/Learner 角色及 gRPC 写读路由；与 distributed/13 分工。

## A Deterministic Daemon That Turns a Labelled Issue Into a Pull Request

DevFeed: [A Deterministic Daemon That Turns a Labelled Issue Into a Pull Request](<https://devfeed.tech/articles/a-deterministic-daemon-that-turns-a-labelled-issue-into-a-pull-request-34105.md>)

Original publisher: [Read original article](<https://philipptheserver.com/posts/issue-to-pr-daemon/>)

Author: Philipp Lehmann (philipp.lehmann@gruppe.ai)

Published: 2026-07-24T07:00:00Z

Content type: tutorial

Language: en

Sources: [Philipp Lehmann](<https://devfeed.tech/sources/philipp-lehmann.md>)

Topics: [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Git](<https://devfeed.tech/topics/git.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Python](<https://devfeed.tech/topics/python.md>), [audit](<https://devfeed.tech/topics/audit.md>), [file](<https://devfeed.tech/topics/file.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agents](<https://devfeed.tech/tags/agents.md>), [audit-trail](<https://devfeed.tech/tags/audit-trail.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [commit](<https://devfeed.tech/tags/commit.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

The article proposes an issue-to-PR daemon in which a model works in an isolated workspace and returns a patch, while deterministic Python code validates and applies the patch, commits it, pushes it, and opens the pull request. This separation improves auditability and avoids giving the model credentials for the real repository.

### Source excerpt

git apply --check before git commit: an issue-to-PR daemon where the model only returns a patch and plain Python commits, pushes and opens the PR.

## Inside the Git Hooks: Tagging Every AI Agent Commit (Part 3)

DevFeed: [Inside the Git Hooks: Tagging Every AI Agent Commit (Part 3)](<https://devfeed.tech/articles/inside-the-git-hooks-tagging-every-ai-agent-commit-part-3-25424.md>)

Original publisher: [Read original article](<https://jonnyzzz.com/blog/2026/06/26/inside-the-git-hooks-for-ai-agents/>)

Author: Eugene Petrenko

Published: 2026-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Eugene Petrenko](<https://devfeed.tech/sources/eugene-petrenko.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [capture](<https://devfeed.tech/tags/capture.md>), [commit](<https://devfeed.tech/tags/commit.md>), [eugene-petrenko](<https://devfeed.tech/tags/eugene-petrenko.md>), [git](<https://devfeed.tech/tags/git.md>), [git-hooks](<https://devfeed.tech/tags/git-hooks.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [jonnyzzz](<https://devfeed.tech/tags/jonnyzzz.md>), [provenance](<https://devfeed.tech/tags/provenance.md>), [repo](<https://devfeed.tech/tags/repo.md>), [sandbox](<https://devfeed.tech/tags/sandbox.md>), [tag-41199d53f463](<https://devfeed.tech/tags/tag-41199d53f463.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This third-part tutorial explains a best-effort Git hook layer for AI agents running inside a sandbox. The hooks stamp session IDs on commits, preserve the tags through amend, rebase, and squash, and capture restorable copies of pushed changes while continuing to run repository-local hooks.

### Source excerpt

Part 3 -- the build for the lighter solution. How a set of git hooks stamps a session id on every commit an AI Agent makes, survives squash and rebase, and captures each push -- all best-effort, all inside the sandbox.

## How Agentic AI Creates Gaps in Audit-Trail Accountability

DevFeed: [How Agentic AI Creates Gaps in Audit-Trail Accountability](<https://devfeed.tech/articles/the-audit-trail-was-your-ground-truth-it-isn-t-anymore-34124.md>)

Original publisher: [Read original article](<https://flashdba.com/2026/04/27/the-audit-trail-was-your-ground-truth-it-isnt-anymore/>)

Author: flashdba

Published: 2026-04-27T13:43:04Z

Content type: opinion

Language: en

Sources: [flashdba](<https://devfeed.tech/sources/flashdba.md>)

Topics: [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [audit trail](<https://devfeed.tech/topics/audit-trail.md>), [audit](<https://devfeed.tech/topics/audit.md>)

Tags: [account](<https://devfeed.tech/tags/account.md>), [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [audit](<https://devfeed.tech/tags/audit.md>), [audit-trail](<https://devfeed.tech/tags/audit-trail.md>), [changes](<https://devfeed.tech/tags/changes.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [commit](<https://devfeed.tech/tags/commit.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [credentials](<https://devfeed.tech/tags/credentials.md>), [databases](<https://devfeed.tech/tags/databases.md>), [databases-and-agentic-ai](<https://devfeed.tech/tags/databases-and-agentic-ai.md>), [identity](<https://devfeed.tech/tags/identity.md>), [inferencing](<https://devfeed.tech/tags/inferencing.md>), [model](<https://devfeed.tech/tags/model.md>), [performance](<https://devfeed.tech/tags/performance.md>), [regulatory](<https://devfeed.tech/tags/regulatory.md>), [service](<https://devfeed.tech/tags/service.md>)

### AI overview

The article argues that conventional audit trails can record database changes accurately while failing to explain an AI agent's reasoning or establish accountable human ownership. It identifies unstable agent identity and the absence of externally documented reasoning as the central gaps.

### Source excerpt

The audit trail still runs. Every commit is recorded. But agentic AI has broken the two assumptions it was built on - and the incompleteness is invisible until you need it.

## Waiting for PostgreSQL 19 - Add support for EXCEPT TABLE in ALTER PUBLICATION.

DevFeed: [Waiting for PostgreSQL 19 - Add support for EXCEPT TABLE in ALTER PUBLICATION.](<https://devfeed.tech/articles/waiting-for-postgresql-19-add-support-for-except-table-in-alter-publication-33683.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/03/26/waiting-for-postgresql-19-add-support-for-except-table-in-alter-publication/>)

Author: depesz

Published: 2026-03-26T11:46:24Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [syntax](<https://devfeed.tech/topics/syntax.md>)

Tags: [alter](<https://devfeed.tech/tags/alter.md>), [commit](<https://devfeed.tech/tags/commit.md>), [except](<https://devfeed.tech/tags/except.md>), [logical](<https://devfeed.tech/tags/logical.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [publication](<https://devfeed.tech/tags/publication.md>), [replication](<https://devfeed.tech/tags/replication.md>), [table](<https://devfeed.tech/tags/table.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

This article discusses a PostgreSQL 19 patch adding EXCEPT TABLE support to ALTER PUBLICATION. The change allows modifying a publication's table exclusion list, though the example notes that specifying an exclusion for one publication replaced its previous exclusion list.

### Source excerpt

On 20th of March 2026, Amit Kapila committed patch: Add support for EXCEPT TABLE in ALTER PUBLICATION. Following commit fd366065e0, which added EXCEPT TABLE support to CREATE PUBLICATION, this commit extends ALTER PUBLICATION to allow modifying the exclusion list. New Syntax: ALTER PUBLICATION name SET publication_all_object [, ... ] where publication_all_object is ... Continue reading "Waiting for PostgreSQL 19 - Add support for EXCEPT TABLE in ALTER PUBLICATION."

## Keeping sponsor lists up-to-date

DevFeed: [Keeping sponsor lists up-to-date](<https://devfeed.tech/articles/keeping-sponsor-lists-up-to-date-37848.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/sponsors-gen/>)

Author: Carlos Alexandro Becker

Published: 2026-03-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Tool](<https://devfeed.tech/topics/tool.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Template](<https://devfeed.tech/topics/template.md>), [sensitive data](<https://devfeed.tech/topics/sensitive-data.md>)

Tags: [commit](<https://devfeed.tech/tags/commit.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [go](<https://devfeed.tech/tags/go.md>), [scheduled](<https://devfeed.tech/tags/scheduled.md>), [sensitive-data](<https://devfeed.tech/tags/sensitive-data.md>), [template](<https://devfeed.tech/tags/template.md>)

### AI overview

The article introduces a Go tool that automates updating sponsor lists across README files and websites. It fetches sponsors from GitHub Sponsors and OpenCollective, renders content with Go templates, supports shared configuration and remote templates, and can run daily through GitHub Actions with automatic commits.

### Source excerpt

Keeping sponsor lists up-to-date across multiple READMEs and websites is tedious - so I wrote a tool to automate it.

## Waiting for PostgreSQL 19 - psql: Add %i prompt escape to indicate hot standby status.

DevFeed: [Waiting for PostgreSQL 19 - psql: Add %i prompt escape to indicate hot standby status.](<https://devfeed.tech/articles/waiting-for-postgresql-19-psql-add-i-prompt-escape-to-indicate-hot-standby-status-33678.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/02/21/waiting-for-postgresql-19-psql-add-i-prompt-escape-to-indicate-hot-standby-status/>)

Author: depesz

Published: 2026-02-21T14:51:47Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Replication](<https://devfeed.tech/topics/replication.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [commit](<https://devfeed.tech/tags/commit.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [primary](<https://devfeed.tech/tags/primary.md>), [psql](<https://devfeed.tech/tags/psql.md>), [replication](<https://devfeed.tech/tags/replication.md>), [standby](<https://devfeed.tech/tags/standby.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

The article explains a PostgreSQL 19 patch that adds the %i prompt escape to psql. The escape indicates whether the connected server is a primary or operating in hot standby mode, making replication status visible in the psql prompt.

### Source excerpt

On 3rd of February 2026, Fujii Masao committed patch: psql: Add %i prompt escape to indicate hot standby status. This commit introduces a new prompt escape %i for psql, which shows whether the connected server is operating in hot standby mode. It expands to standby if the server reports in_hot_standby = on, and primary ... Continue reading "Waiting for PostgreSQL 19 - psql: Add %i prompt escape to indicate hot standby status."

## Zsh 'illegal modifier' with Git Conventional Commits

DevFeed: [Zsh 'illegal modifier' with Git Conventional Commits](<https://devfeed.tech/articles/zsh-illegal-modifier-with-git-conventional-commits-27738.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/12/zsh-illegal-modifier-with-git-conventional-commits/>)

Author: Tom

Published: 2025-12-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Zsh](<https://devfeed.tech/topics/zsh.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [command-line-tip](<https://devfeed.tech/tags/command-line-tip.md>), [commit](<https://devfeed.tech/tags/commit.md>), [conventional-commits](<https://devfeed.tech/tags/conventional-commits.md>), [errors](<https://devfeed.tech/tags/errors.md>), [fzf](<https://devfeed.tech/tags/fzf.md>), [git](<https://devfeed.tech/tags/git.md>), [git-commit-error](<https://devfeed.tech/tags/git-commit-error.md>), [github-action](<https://devfeed.tech/tags/github-action.md>), [history-expansion](<https://devfeed.tech/tags/history-expansion.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [no-bang-hist](<https://devfeed.tech/tags/no-bang-hist.md>), [shell-configuration](<https://devfeed.tech/tags/shell-configuration.md>), [zsh](<https://devfeed.tech/tags/zsh.md>), [zsh-bang-history](<https://devfeed.tech/tags/zsh-bang-history.md>)

### AI overview

This tutorial explains how Zsh history expansion can cause "illegal modifier" errors when using Git Conventional Commits. It shows how disabling the NO_BANG_HIST option allows bang characters to be used in quoted commit messages.

### Source excerpt

Fix ZSH 'illegal modifier' errors with Git Conventional Commits by disabling the NO_BANG_HIST option.

## Pinning GitHub Actions

DevFeed: [Pinning GitHub Actions](<https://devfeed.tech/articles/pinning-github-actions-37823.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/pinning-github-actions/>)

Author: Carlos Alexandro Becker

Published: 2025-11-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Security](<https://devfeed.tech/topics/security.md>), [supply chain attacks](<https://devfeed.tech/topics/supply-chain-attacks.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Dependabot](<https://devfeed.tech/topics/dependabot.md>)

Tags: [also](<https://devfeed.tech/tags/also.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [commit](<https://devfeed.tech/tags/commit.md>), [dependabot](<https://devfeed.tech/tags/dependabot.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [security](<https://devfeed.tech/tags/security.md>), [supply-chain-attacks](<https://devfeed.tech/tags/supply-chain-attacks.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This tutorial explains why GitHub Actions should be pinned to full commit SHAs instead of mutable tags or branches. It describes the security and auditability benefits and introduces caarlos0/pinata, a tool that automates pinning and creates pull requests for review.

### Source excerpt

If you're using GitHub Actions in your projects, you should be pinning your actions to specific commit SHAs instead of using tags or branches.

## Waiting for PostgreSQL 19 - Add psql PROMPT variable for search\_path.

DevFeed: [Waiting for PostgreSQL 19 - Add psql PROMPT variable for search\_path.](<https://devfeed.tech/articles/waiting-for-postgresql-19-add-psql-prompt-variable-for-search-path-33667.md>)

Original publisher: [Read original article](<https://www.depesz.com/2025/10/29/waiting-for-postgresql-19-add-psql-prompt-variable-for-search_path/>)

Author: depesz

Published: 2025-10-29T11:59:17Z

Content type: release

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [commit](<https://devfeed.tech/tags/commit.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [prompt](<https://devfeed.tech/tags/prompt.md>), [prompt1](<https://devfeed.tech/tags/prompt1.md>), [psql](<https://devfeed.tech/tags/psql.md>), [query](<https://devfeed.tech/tags/query.md>), [schema](<https://devfeed.tech/tags/schema.md>), [schemas](<https://devfeed.tech/tags/schemas.md>), [search-path](<https://devfeed.tech/tags/search-path.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

A PostgreSQL patch adds a psql PROMPT variable for displaying the current search_path. The %S substitution works when connected to Postgres 18 or newer, because search_path was first marked as GUC_REPORT in a prior commit.

### Source excerpt

On 28th of October 2025, Nathan Bossart committed patch: Add psql PROMPT variable for search_path. The new %S substitution shows the current value of search_path. Note that this only works when connected to Postgres v18 or newer, since search_path was first marked as GUC_REPORT in commit 28a1121fd9. On older versions that don't report search_path, ... Continue reading "Waiting for PostgreSQL 19 - Add psql PROMPT variable for search_path."

## GitHub Merge Strategies: A Visual Explanation

DevFeed: [GitHub Merge Strategies: A Visual Explanation](<https://devfeed.tech/articles/github-merge-strategies-a-visual-explanation-27341.md>)

Original publisher: [Read original article](<https://blog.mmckenna.me/github-merge-strategies-a-visual-explanation>)

Author: Matt McKenna

Published: 2025-03-01T12:00:36Z

Content type: tutorial

Language: en

Sources: [Matt McKenna](<https://devfeed.tech/sources/matt-mckenna.md>)

Topics: [GitHub](<https://devfeed.tech/topics/github.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Git](<https://devfeed.tech/topics/git.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [commit](<https://devfeed.tech/tags/commit.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>)

### AI overview

This article visually explains three GitHub pull request merge strategies: merge commits preserve the full branch history and add a merge commit, squash merges combine the branch into one commit, and rebase merges retain individual commits while creating a linear history and new commit hashes.

### Source excerpt

Discussion started up at work this week about the different merge strategies available in GitHub. I looked around online to see if I could find a good article to send to share a quick snapshot of the differences represented visually and didn't find a...

## Keycloak Client Libraries 26.0.4 released

DevFeed: [Keycloak Client Libraries 26.0.4 released](<https://devfeed.tech/articles/keycloak-client-libraries-26-0-4-released-31682.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2025/01/keycloak-client-2604-released>)

Author: Keycloak Team

Published: 2025-01-17T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [client](<https://devfeed.tech/topics/client.md>), [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [bugs](<https://devfeed.tech/tags/bugs.md>), [changes](<https://devfeed.tech/tags/changes.md>), [client](<https://devfeed.tech/tags/client.md>), [commit](<https://devfeed.tech/tags/commit.md>), [idm](<https://devfeed.tech/tags/idm.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-client-libraries-release](<https://devfeed.tech/tags/keycloak-client-libraries-release.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [release](<https://devfeed.tech/tags/release.md>), [resolved](<https://devfeed.tech/tags/resolved.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

Keycloak Client Libraries 26.0.4 was released on January 17, 2025. The release notes list enhancements and resolved bugs involving logging, GitHub Actions, synchronization with Keycloak Server, testing against server images, and pull requests.

### Source excerpt

Upgrading Before upgrading refer to the migration guide for a complete list of changes. All resolved issues Enhancements #113 Wrong logger class client #117 Remove JEE from the title of GH actions client #127 Sync after Keycloak server 26.1.0 release client #130 Test with keycloak server images 24.0, 26.0 and 26.1 client Bugs #115 ProviderTest failing with latest nightly build client #124 The action "Sync with Keycloak Server and send PR with changes" sends PR, which does not have DCO on the commit client #129 The action "Sync with Keycloak Server and send PR with changes" takes only client-common-synced into consideration client

## Cursor: How I rollback multi-file changes

DevFeed: [Cursor: How I rollback multi-file changes](<https://devfeed.tech/articles/cursor-how-i-rollback-multi-file-changes-33442.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2024/10/25/cursor-dura>)

Published: 2024-10-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [cursor](<https://devfeed.tech/topics/cursor.md>), [Git](<https://devfeed.tech/topics/git.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [commit](<https://devfeed.tech/tags/commit.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [env-file-security](<https://devfeed.tech/tags/env-file-security.md>), [git](<https://devfeed.tech/tags/git.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [open-source](<https://devfeed.tech/tags/open-source.md>)

### AI overview

The article explains how the author's dura tool automatically creates Git commits on a hidden branch whenever watched files change, allowing users to roll back mistakes made during multi-file edits in Cursor. It covers installation and use on macOS, Windows, and Linux, and warns that commits may include sensitive or unwanted files such as databases and passwords.

### Source excerpt

Yay! Cursor is fun. All the way up until you accept some large multi-file change only to realize it was a mistake, but there's no simple way to rollback.

## Engineers Should Take Responsibility for Bugs in AI-Generated Code

DevFeed: [Engineers Should Take Responsibility for Bugs in AI-Generated Code](<https://devfeed.tech/articles/ai-didn-t-write-that-bug-33438.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2024/09/24/ownership>)

Published: 2024-09-24T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Git](<https://devfeed.tech/topics/git.md>), [coding](<https://devfeed.tech/topics/coding.md>), [trust](<https://devfeed.tech/topics/trust.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [autonomous](<https://devfeed.tech/tags/autonomous.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [commit](<https://devfeed.tech/tags/commit.md>), [git](<https://devfeed.tech/tags/git.md>), [junior](<https://devfeed.tech/tags/junior.md>), [management](<https://devfeed.tech/tags/management.md>), [manager](<https://devfeed.tech/tags/manager.md>), [solve](<https://devfeed.tech/tags/solve.md>), [support](<https://devfeed.tech/tags/support.md>), [team](<https://devfeed.tech/tags/team.md>), [testing](<https://devfeed.tech/tags/testing.md>), [trust](<https://devfeed.tech/tags/trust.md>), [value](<https://devfeed.tech/tags/value.md>)

### AI overview

This opinion article argues that engineers remain accountable for bugs in code generated with AI. It says attributing defects to AI reduces an engineer's perceived value, and that responsible use requires testing, judgment, and ownership.

### Source excerpt

AI didn't write that bug. If you're name is on the commit in Git, you wrote the bug.

## Git Version Control Tutorial: A Beginner's Guide to Git Version Control

DevFeed: [Git Version Control Tutorial: A Beginner's Guide to Git Version Control](<https://devfeed.tech/articles/git-version-control-tutorial-a-beginner-s-guide-to-git-version-control-28417.md>)

Original publisher: [Read original article](<https://banes.dev/git-version-control-tutorial-a-beginners-guide-to-git-version-control/>)

Author: admin

Published: 2024-05-03T07:28:35Z

Content type: tutorial

Language: en

Sources: [Posts on Chris Banes](<https://devfeed.tech/sources/posts-on-chris-banes.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [version-control](<https://devfeed.tech/topics/version-control.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [beginner](<https://devfeed.tech/tags/beginner.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [commands](<https://devfeed.tech/tags/commands.md>), [commit](<https://devfeed.tech/tags/commit.md>), [core](<https://devfeed.tech/tags/core.md>), [developers](<https://devfeed.tech/tags/developers.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-system](<https://devfeed.tech/tags/distributed-system.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [files](<https://devfeed.tech/tags/files.md>), [git](<https://devfeed.tech/tags/git.md>), [guide](<https://devfeed.tech/tags/guide.md>), [machine](<https://devfeed.tech/tags/machine.md>), [merge](<https://devfeed.tech/tags/merge.md>), [projects](<https://devfeed.tech/tags/projects.md>), [repository](<https://devfeed.tech/tags/repository.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [version-control](<https://devfeed.tech/tags/version-control.md>)

### AI overview

A beginner-focused tutorial explaining Git as a distributed version control system for tracking changes, managing repositories, creating commits and branches, and collaborating with other developers.

### Source excerpt

Have you ever worked on a project and accidentally overwritten your progress? Maybe you spent hours coding a new feature, then realized you needed to go back to a previous version. This is where git version control can help! Git is a lifesaver for developers, allowing you to track changes, collaborate effectively, and ensure you [...]

## Automatically setting 'lastmod' in Hugo pages with Git modification date

DevFeed: [Automatically setting 'lastmod' in Hugo pages with Git modification date](<https://devfeed.tech/articles/automatically-setting-lastmod-in-hugo-pages-with-git-modification-date-27700.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/03/automatically-setting-lastmod-in-hugo-pages-with-git-modification-date/>)

Author: Tom

Published: 2024-03-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [Git](<https://devfeed.tech/topics/git.md>), [Search engine optimization (SEO)](<https://devfeed.tech/topics/seo.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>)

Tags: [automatic-lastmod-setting](<https://devfeed.tech/tags/automatic-lastmod-setting.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [commit](<https://devfeed.tech/tags/commit.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [devops](<https://devfeed.tech/tags/devops.md>), [git](<https://devfeed.tech/tags/git.md>), [git-modification-date](<https://devfeed.tech/tags/git-modification-date.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-lastmod](<https://devfeed.tech/tags/hugo-lastmod.md>), [hugo-seo-optimization](<https://devfeed.tech/tags/hugo-seo-optimization.md>), [hugo-site-indexing](<https://devfeed.tech/tags/hugo-site-indexing.md>), [search-engine-optimization](<https://devfeed.tech/tags/search-engine-optimization.md>), [seo](<https://devfeed.tech/tags/seo.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

This tutorial explains how to set Hugo's lastmod parameter automatically from Git modification dates. It covers the need for full Git history, adjustments for GitHub Actions and Cloudflare Pages, and applicability to other CI/CD configurations.

### Source excerpt

Learn how to automatically set the 'lastmod' parameter in Hugo pages using Git modification dates to improve SEO and expedite search engine indexing.

## Git hacks - a set of my favorite git aliases

DevFeed: [Git hacks - a set of my favorite git aliases](<https://devfeed.tech/articles/git-hacks-a-set-of-my-favorite-git-aliases-27686.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/01/git-hacks-a-set-of-my-favorite-git-aliases/>)

Author: Tom

Published: 2024-01-27T00:00:00Z

Content type: article

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [bitbucket](<https://devfeed.tech/topics/bitbucket.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [bitbucket](<https://devfeed.tech/tags/bitbucket.md>), [commands](<https://devfeed.tech/tags/commands.md>), [commit](<https://devfeed.tech/tags/commit.md>), [git](<https://devfeed.tech/tags/git.md>), [git-aliases](<https://devfeed.tech/tags/git-aliases.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>)

### AI overview

An overview of the author's favorite Git aliases for simplifying status and log checks, commits, branch management, reverts, and Bitbucket navigation. The article also describes aliases for extracting Jira ticket numbers and managing commit messages.

### Source excerpt

I use Git a lot, even writing this article i will commit text few times. There's a set of aliases I rely on daily and they're first I add in new place. Some Git commands are unnecessarily verbose. You can make your life much easier with bash-completions, but if you write it tens of times per day, it's anyway a lot of typing... and I'm a lazy man 😄 Simple status/log checks git s s = status --short --branch --untracked-files Shows a short, branch-focused status with untracked files.

## How to make pull requests easier and faster to review

DevFeed: [How to make pull requests easier and faster to review](<https://devfeed.tech/articles/gaming-the-pull-request-review-system-28708.md>)

Original publisher: [Read original article](<https://jeroenmols.com/blog/2023/06/26/prs-and-commits/>)

Author: info@jeroenmols.com (Jeroen Mols)

Published: 2023-06-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Jeroen Mols](<https://devfeed.tech/sources/jeroen-mols.md>)

Topics: [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [blogs](<https://devfeed.tech/tags/blogs.md>), [code](<https://devfeed.tech/tags/code.md>), [commit](<https://devfeed.tech/tags/commit.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [git](<https://devfeed.tech/tags/git.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [pullrequest](<https://devfeed.tech/tags/pullrequest.md>), [reviews](<https://devfeed.tech/tags/reviews.md>)

### AI overview

The article recommends making pull requests small, well described, visually supported, and self-reviewed to speed up reviews, reduce rework, and improve feedback. It also discusses applying similar principles to commit messages, while noting that squashing commits may shift the author's focus to pull requests.

### Source excerpt

As developers, we love to build cool things and ship them as fast as reasonably possible. And to get that done, here are a few things you can do to "game the system".

## Dura: Automatic Background Commits for Git Repository Recovery

DevFeed: [Dura: Automatic Background Commits for Git Repository Recovery](<https://devfeed.tech/articles/just-commit-more-33416.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2022/10/04/dura>)

Published: 2022-10-04T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Nix](<https://devfeed.tech/topics/nix.md>)

Tags: [backup](<https://devfeed.tech/tags/backup.md>), [branch](<https://devfeed.tech/tags/branch.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [commit](<https://devfeed.tech/tags/commit.md>), [git](<https://devfeed.tech/tags/git.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The author describes dura, a Rust tool that automatically makes background Git commits on a separate branch. The article explains how this creates a timestamp-ordered record of changes that can help recover abandoned work, resets, merges, and other difficult repository states.

### Source excerpt

Over new years this past year I made dura. It's like auto-backup for Git. It tries to stay out of the way until you're in a panic, trying to figure out how to rescue your repository from a thoughtless git reset --hard. It makes background commits, real Git commits that you don't normally have to see in the log, by committing to a different branch than the one you have checked out. Overall, it's been a blast. I've learned a lot from the contributors, like how to write well-formed Rust as well as a bit about Nix.

## Git Error: failed to push some refs to

DevFeed: [Git Error: failed to push some refs to](<https://devfeed.tech/articles/git-error-failed-to-push-some-refs-to-28174.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/git/2022/05/31/git-error-failed-to-push-some-refs-to.html>)

Author: Fuzzygroup

Published: 2022-05-31T04:34:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [Development](<https://devfeed.tech/topics/development.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>)

Tags: [commit](<https://devfeed.tech/tags/commit.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [refs](<https://devfeed.tech/tags/refs.md>)

### AI overview

The article explains that Git's "src refspec main does not match any" error occurred because the new project had not yet been added or committed. Adding and committing the project before pushing resolved the error.

### Source excerpt

So I was just stumbling through setting up a new project and getting it deployed when I hit this little gem: ❯ git push -u origin main error: src refspec main does not match any error: failed to push some refs to 'github.com:fuzzygroup/cartazzi.git' I did the obligatory "scratch my chin and play with my beard" that you do when you are confused (and it is late and you are tired). And then I realized - "Oh crap, it is NEW; I bet I never added yet." And lo and behold - a simple add / commit and push worked! Crappy ass error message though. Sigh. Note: Deployment first development is my new best practice - make things deploy initially when they are still simple. This is particularly easy when you use a deployment engine like HatchBox

## Automatically add ticket ID to every commit message in Git

DevFeed: [Automatically add ticket ID to every commit message in Git](<https://devfeed.tech/articles/automatically-add-ticket-id-to-every-commit-message-in-git-27667.md>)

Original publisher: [Read original article](<https://gagor.pro/2021/11/automatically-add-ticket-id-to-every-commit-message-in-git/>)

Author: Tom

Published: 2021-11-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [Automation](<https://devfeed.tech/topics/automation.md>)

Tags: [add-ticket-id-to-commit](<https://devfeed.tech/tags/add-ticket-id-to-commit.md>), [automation](<https://devfeed.tech/tags/automation.md>), [bash](<https://devfeed.tech/tags/bash.md>), [commit](<https://devfeed.tech/tags/commit.md>), [commit-message-best-practices](<https://devfeed.tech/tags/commit-message-best-practices.md>), [git](<https://devfeed.tech/tags/git.md>), [git-aliases](<https://devfeed.tech/tags/git-aliases.md>), [git-automation](<https://devfeed.tech/tags/git-automation.md>), [git-commit-message](<https://devfeed.tech/tags/git-commit-message.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jira-integration](<https://devfeed.tech/tags/jira-integration.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>)

### AI overview

A tutorial explains how to use custom Git aliases to read a ticket ID from the branch name and automatically prefix commit messages with it. Commits fail when no ticket ID is available.

### Source excerpt

Learn how to automatically add ticket IDs to every commit message in Git, ensuring consistent and informative commit history by using custom Git aliases.

## The Communicative Value of Using Git Well

DevFeed: [The Communicative Value of Using Git Well](<https://devfeed.tech/articles/the-communicative-value-of-using-git-well-40432.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2020/01/14/the-communicative-value-of-using-git-well/>)

Published: 2020-01-14T07:00:28Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [version-control](<https://devfeed.tech/topics/version-control.md>), [Code](<https://devfeed.tech/topics/code.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>)

Tags: [commit](<https://devfeed.tech/tags/commit.md>), [git](<https://devfeed.tech/tags/git.md>), [mercurial](<https://devfeed.tech/tags/mercurial.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [twitter](<https://devfeed.tech/tags/twitter.md>), [version-control](<https://devfeed.tech/tags/version-control.md>)

### AI overview

This opinion article argues that Git's distinctive value lies in treating code changes as manipulable data that can be shaped into clear stories. Granular changes, history manipulation, and inexpensive branching help developers draft, decompose, recombine, and narrate changes for easier review and communication.

### Source excerpt

Recently my employer (Google) forced me to switch to Mercurial instead of my usual version control system, git. The process of switching sparked a few discussions between me and my colleagues about the value of various version control systems. A question like "what benefit does git provide over Mercurial" yielded no clear answers, suggesting many developers don't know. An informal Twitter survey didn't refute this claim. A distinguished value git provides me is the ability to sculpt code changes into stories.

[Next page](<https://devfeed.tech/tags/commit.md?cursor=WyIyMDIwLTAxLTE0VDA3OjAwOjI4KzAwOjAwIiwgImYyZmE5NjRhLTAwZTQtNDRmOS1hODAxLTJmNWVkNDg1MzdhMCJd>)