Re: [PATCH v7 0/4] Importing and exporting stashes to refs
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Jun 5, 2025, 09:38 UTC
- Message-ID
- <1585978c-f284-41a0-a34c-e31fa8502309@gmail.com>
- In-Reply-To
- <20250601223225.464076-1-sandals@crustytoothpaste.net>
Hi brian
I've left a couple of comments on patch 3 but everything else looks fine to me
Thanks
Phillip
On 01/06/2025 23:32, brian m. carlson wrote:
Show 82 quoted lines
> Stashes are currently stored using the reflog in a given repository. > This is an interesting and novel way to handle them, but there is no way > to easily move a set of stashes across machines. For example, groups of > stashes cannot be bundled, pushed, or fetched. > > Let's solve this problem by allowing users to import and export stashes > to a chain of commits. The commits used in a stash export contain two > parents: one which is the pointer to the next exported stash (or to an > empty commit with no parents if there are no more) and the second is the > stash commit that would normally be stored in the reflog. > > Original thread at message-ID: <20220310173236.4165310-1-sandals@crustytoothpaste.net> > > Changes from v6: > * Add Phillip's sign-off to the last patch. > * Use `commit_list` for tracking commits. > * Use reflog entry walker. > * Fix some commit messages for improved legibility. > * Rephrase some error messages for precision. > * Drop the patch that exposes `read_complete_reflog` since it is no longer necessary. > > Changes from v5: > * Rename `parse_revision`. > * Remove extra call to `free_stash_info`. > * Fix parsing of existing commit. > * Add more validation of imported stash commits. > * Add more tests for improved validation of imported stash commits. > * Explicitly cast `items.nr` and make the iteration counter an `ssize_t` > to avoid casting problems. > * Don't require a trailing `\n\n` in commit messages. > * Use `read_complete_reflog` to walk reflogs. > * Be more defensive when using `lookup_commit_reference`. > * Apply parts of Phillip's patches for improved robustness. > * Update commit message to explain additional use cases. > * Use `OPT_STRING` for `--to-ref`. > > Changes from v4: > * Fix another use of oid_array. > * Fix various memory leaks. > * Fix a segfault which appeared after a rebase. > * Use strstr for commits since we don't need to worry about NUL. > * Added some additional tests. > * Verify the ident values we're using to avoid using bad values. > * Various other code cleanups. > * Rebase on `master`. > > Changes from v3: > * Fix strbuf handling to avoid leaks and generally be more sensible. > * Make use of the error return code more often. > * Use oid_array. > * Tidy various parts of the code and fix long lines. > * Simplify tests using git tag. > * Shorten and tidy tests. > * Add an additional test covering the base commit OID and importing and > exporting empty stashes. > > Changes from v2: > * Fix uninitialized strbuf. > * Avoid C99-style initializations. > > Changes from v1: > * Change storage format as suggested by Junio. > * Rename to GIT_OID_GENTLY. > * Remove unnecessary initializations. > * Use ALLOC_GROW_BY. > * Ensure completely reproducible exports. > * Avoid size_t. > * Various other code cleanups. > > brian m. carlson (4): > object-name: make get_oid quietly return an error > builtin/stash: factor out revision parsing into a function > builtin/stash: provide a way to export stashes to a ref > builtin/stash: provide a way to import stashes from a ref > > Documentation/git-stash.adoc | 29 ++- > builtin/stash.c | 460 ++++++++++++++++++++++++++++++++++- > hash.h | 1 + > object-name.c | 6 +- > t/t3903-stash.sh | 94 +++++++ > 5 files changed, 577 insertions(+), 13 deletions(-) >