title | layout | date | author | categories | navbar | |
---|---|---|---|---|---|---|
Git Rev News Edition 96 (February 28th, 2023) |
default |
2023-02-28 12:06:51 +0100 |
chriscool |
|
false |
Welcome to the 96th edition of Git Rev News, a digest of all things Git. For our goals, the archives, the way we work, and how to contribute or to subscribe, see the Git Rev News page on git.github.io.
This edition covers what happened during the months of January and February 2023.
-
Bug?:
ORIG_HEAD
incorrect after reset duringgit-rebase -i
Erik Cervin Edin sent an email to the mailing list with steps to reproduce a behavior that he didn't like. The steps consisted of an interactive rebase during which a commit was edited and a reset which was performed while editing the commit.
After editing,
git rebase --continue
finished the rebase. But then Erik expectedORIG_HEAD
to point to the tip of the rebased branch before the rebase, while instead it pointed to theHEAD
before the reset.ORIG_HEAD
is one of the pseudo-references that some Git commands use, likeFETCH_HEAD
,MERGE_HEAD
, and a few others.Phillip Wood replied to Erik saying that it was expected that
git reset
would changeORIG_HEAD
toHEAD
just before it was performed. He suggested using the reflog with something likebranch-name@{1}
wherebranch-name
is the branch being rebased and the@{1}
part indicates the previous entry in the reflog for the branch.Erik replied that he knew about the reflog but just expected
ORIG_HEAD
to be reset to.git/rebase-merge/orig-head
at the end of the rebase..git/rebase-merge/orig-head
is an internal file that stores the tip of the branch before a rebase operation.Philippe Blain replied to Erik that he just hit the same bug. He also said that he was confused by the rebase documentation and supplied the series of commands he used to get hit.
Phillip Wood replied to both Erik and Philippe Blain that if we changed the behavior to make
ORIG_HEAD
point to the tip of the branch before it was rebased, some people might not be happy as they might expectgit reset
to have changedORIG_HEAD
. Other people might expect on the contrary thatORIG_HEAD
was always set to the tip of the branch before the rebase when the rebase stopped, which would mean thatgit rebase --continue
would always need to make sureORIG_HEAD
fulfilled that expectation.Phillip said he thought the situation was confusing and he didn't see a way to make it clearer.
Philippe Blain agreed that some people might rely on the current behavior and said he would send documentation updates to make things clearer.
He then sent a patch series consisting of small changes to the documentation of a number of commands:
cherry-pick
,merge
,rebase
andreset
, as well as to the documentation about Git revisions.Junio Hamano, the Git maintainer, commented on some wordings, which after short discussions led Philippe to send a version 2 of his series with very few changes.
This version was accepted and later merged into the master branch.
- Git 2.40.0-rc0, 2.39.2 and friends
- Git for Windows 2.39.2(1)
- libgit2 1.6.1, 1.5.2
- Bitbucket Server 8.8
- Gerrit Code Review 3.5.5, 3.6.4, 3.7.1
- GitHub Enterprise 3.7.6, 3.6.9, 3.5.13, 3.4.16, 3.8.0, 3.7.5, 3.6.8, 3.5.12, 3.4.15
- GitLab 15.9.1 15.9, 15.8.2, 15.7.7 and 15.6.8, 15.8.3, 15.8.1
- GitKraken 9.1.1, 9.1.0
- GitHub Desktop 3.1.8, 3.1.7, 3.1.6
- tig 2.5.8
- Tower for Mac 9.2
- Tower for Windows 4.2 (blog post)
Various
- The Git project has been accepted as a Mentor Organization for Google Summer of Code (GSoC) 2023. We could still add project ideas to our idea page and volunteers to (co-)mentor are still welcome.
- GitLab Improves Merge Requests, GitOps Functionality and More by Matt Saunders on InfoQ, about versions 15.3 through 15.8.
- Git archive generation meets Hyrum's law by Jonathan Corbet on LWN.net (affecting Git and GitHub).
Light reading
-
Will GitOps Change Software Development Forever? by Harshini on Analytics Insight.
-
Git signoff and signing like a champ by Josef Andersson on DEV.to.
-
How to Merge a Git Feature Branch with a Squash Commit by Luis Esteban Saravia M on DEV.to.
This is an alternative to repeatedly using thesquash
command of the interactive rebase. -
Why I love GitLens in my VsCode - Part 1, Part 2, and Part 3 by Luca Del Puppo on his blog.
Also available on DEV.to. -
Data versioning, a rough work-in-progress notebook by Dan MacKinlay. Includes descriptions of
- Data Version Control (DVC) (first mentioned in Git Rev News Edition #42),
- Dolt, which is a version controlled SQL database (first mentioned in Git Rev News Edition #62),
- Pachyderm (first mentioned in Git Rev News Edition #49),
- git-annex - not targeted specifically at data science (first mentioned in passing in Git Rev News #3),
- DataLad,
- Go Get Data (ggd) from the genomics community; it seems to be a lighter version of Pachyderm,
- Splitgraph, which works on top of PostgreSQL,
- Sno to store geospatial and tabular data in Git
(see also Kart, mentioned in Git Rev News #85, which is not listed in this notebook).
The notebook also mentions Pangeo Forge (like Conda Forge, but for data), Intake (lightweight package for finding, investigating, loading and disseminating data), and Flat Data - formerly GitHub OCTO (to bring working sets of data to your repositories, based on the “Git scraping” approach pioneered by Simon Willison (mentioned in Git Rev News Edition #68)).
See also Git Rev News #82, which mentions tools for version controlling database schemas, version controlling queries, data versioning, etc. -- all taken from articles on DoltHub Blog. -
The Git source code audit, viewed as a Rust programmer by Litchi Pi (Tim); the audit itself was mentioned in Git Rev News #95.
-
An Easy git Workflow by Curtis “Ovid” Poe on DEV.to.
Also available as Easy Git Workflow (2020) on (Technical) Articles by Ovid.
- The technology behind GitHub’s new code search by Timothy Clem in the Engineering section of the GitHub Blog.
- Mobile Price Classification: An Open Source Data Science Project with Dagshub
by Davis David (@davisdavid) on HackerNoon.
- The workflow described in this article uses DVC (first mentioned in Git Rev News Edition #42), DAGsHub (first mentioned in Git Rev News Edition #72), MLflow, and the Streamlit library.
- FAIR data pipeline: provenance-driven data management for traceable scientific workflows; an open access research article in Volume 380, Issue 2233 of Philosophical Transactions of The Royal Society A (DOI:10.1098/rsta.2021.0300).
Easy watching
- Move Commits Between Branches in Git
by Leonardo Montini, also known as Dev Leonardo.
You can read the accompanying Move Commits Between Branches in Git - 3 Different Methods article on DEV.to (for This is Learning), 5th part of the git better - Improve your git skills series.
Git tools and sites
- conventional: comments are a set of conventions
to make code review comments to be easy to grok and grep.
- This can be considered a companion to Conventional Commits specification, first mentioned in Git Rev News Edition #52.
- Flipt is an open source,
self-hosted feature flag solution.
- Feature Flags or Feature Toggles are a technique that allows to modify system behavior without changing code. They are often used with Trunk Based Development, as described in Patterns for Managing Source Code Branches by Martin Fowler, which was mentioned in Git Rev News Edition #63.
- git-workflow
by Curtis “Ovid” Poe is a simplified subset of the Git tools used by
All Around the World company for software development.
It provides three new commands:
git refresh
,git pushback
andgit done
. - Git-Heat-Map is a tool to visualize a Git repository by diff activity using a treemap chart.
- Diff/merge tools and Git GUIs - notebooks of Dan MacKinlay.
- Git tricks: Dan MacKinlay's notes and links, not intended to be tutorial.
- Awesome CLI Apps is a curated list of command line apps, including the ones for Version Control.
- Automerge 2.0 is a CRDT, or "Conflict-free Replicated Data Type", that one can use to implement real-time collaboration for an application, which is focused on optimizing editing of plaintext.
This edition of Git Rev News was curated by Christian Couder <[email protected]>, Jakub Narębski <[email protected]>, Markus Jansen <[email protected]> and Kaartic Sivaraam <[email protected]> with help from Bruno Brito.