git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Caleb White <cdwhite3@pm.me>
To: git@vger.kernel.org
Cc: Taylor Blau <me@ttaylorr.com>, Junio C Hamano <gitster@pobox.com>,
	Eric Sunshine <sunshine@sunshineco.com>,
	Caleb White <cdwhite3@pm.me>
Subject: [PATCH v2 0/5] Allow relative worktree linking to be configured by the user
Date: Mon, 28 Oct 2024 19:09:30 +0000	[thread overview]
Message-ID: <20241028-wt_relative_options-v2-0-33a5021bd7bb@pm.me> (raw)

This patch introduces the `--[no-]relative-paths` CLI option for
`git worktree {add, move, repair}` commands, as well as the
`worktree.useRelativePaths` configuration setting. When enabled,
these options allow worktrees to be linked using relative paths,
enhancing portability across environments where absolute paths
may differ (e.g., containerized setups, shared network drives).
Git still creates absolute paths by default, but these options allow
users to opt-in to relative paths if desired.

Using the `--relative-paths` option with `worktree {move, repair}`
will convert absolute paths to relative ones, while `--no-relative-paths`
does the reverse. For cases where users want consistency in path handling,
the config option `worktree.useRelativePaths` provides a persistent setting.

A new extension, `relativeWorktrees`, is added to indicate that at least
one worktree in the repository has been linked with relative paths. This
extension is automatically set when a worktree is created or repaired
using the `--relative-paths` option, or when the
`worktree.useRelativePaths` config is set to `true`.

The `relativeWorktrees` extension ensures older Git versions do not
attempt to automatically prune worktrees with relative paths, as they
would not not recognize the paths as being valid.

Signed-off-by: Caleb White <cdwhite3@pm.me>
---
The base for this patch series is obtained by applying the following
patch onto 6a11438f43:
- cw/config-extensions topic (doc: consolidate extensions in git-config
  documentation, 2024-10-22, <20241021-cleanup-extension-docs-v1-1-ab02cece3132@pm.me>)

Link to original patch series:
https://lore.kernel.org/git/20241007-wt_relative_paths-v3-0-622cf18c45eb@pm.me

---
Changes in v2:
- Fixed a bug where repositories with valid extensions would be downgraded
  to v0 during reinitialization, causing future operations to fail.
- Split patch [1/2] into three separate patches.
- Updated cover letter and commit messages.
- Updated documentation wording.
- Link to v1: https://lore.kernel.org/r/20241025-wt_relative_options-v1-0-c3005df76bf9@pm.me

---
Caleb White (5):
      worktree: add CLI/config options for relative path linking
      worktree: add `write_worktree_linking_files` function
      worktree: add tests for worktrees with relative paths
      setup: correctly reinitialize repository version
      worktree: add `relativeWorktrees` extension

 Documentation/config/extensions.txt |   6 ++
 Documentation/config/worktree.txt   |   5 ++
 Documentation/git-worktree.txt      |  12 +++
 builtin/worktree.c                  |  20 ++---
 repository.c                        |   1 +
 repository.h                        |   1 +
 setup.c                             |  39 +++++++---
 setup.h                             |   1 +
 t/t0001-init.sh                     |  17 ++++-
 t/t2400-worktree-add.sh             |  54 ++++++++++++++
 t/t2401-worktree-prune.sh           |   3 +-
 t/t2402-worktree-list.sh            |  22 ++++++
 t/t2403-worktree-move.sh            |  22 ++++++
 t/t2406-worktree-repair.sh          |  26 +++++++
 t/t2408-worktree-relative.sh        |  39 ----------
 worktree.c                          | 143 ++++++++++++++++++++----------------
 worktree.h                          |  14 ++++
 17 files changed, 298 insertions(+), 127 deletions(-)
---
base-commit: 6a11438f43469f3815f2f0fc997bd45792ff04c0
change-id: 20241025-wt_relative_options-afa41987bc32
prerequisite-change-id: 20241020-cleanup-extension-docs-f365868711bf:v1
prerequisite-patch-id: 60a443b24e92938b9b6f4a016a7bab87e13bf3ea

Best regards,
-- 
Caleb White <cdwhite3@pm.me>



             reply	other threads:[~2024-10-28 19:09 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-28 19:09 Caleb White [this message]
2024-10-28 19:09 ` [PATCH v2 1/5] worktree: add CLI/config options for relative path linking Caleb White
2024-10-29 14:52   ` Phillip Wood
2024-10-30  5:27     ` Caleb White
2024-10-30 20:16       ` Taylor Blau
2024-10-30 20:21         ` Caleb White
2024-10-30 20:30           ` phillip.wood123
2024-10-30 20:36             ` Caleb White
2024-10-29 18:42   ` Taylor Blau
2024-10-30  5:07     ` Caleb White
2024-10-28 19:09 ` [PATCH v2 2/5] worktree: add `write_worktree_linking_files` function Caleb White
2024-10-29 14:52   ` Phillip Wood
2024-10-29 22:55     ` Taylor Blau
2024-10-30  5:38       ` Caleb White
2024-10-30  5:30     ` Caleb White
2024-10-28 19:09 ` [PATCH v2 3/5] worktree: add tests for worktrees with relative paths Caleb White
2024-10-29 14:52   ` Phillip Wood
2024-10-29 14:58     ` Caleb White
2024-10-29 15:43       ` phillip.wood123
2024-10-30  5:10         ` Caleb White
2024-10-29 23:00   ` Taylor Blau
2024-10-30  4:16     ` Caleb White
2024-10-28 19:10 ` [PATCH v2 4/5] setup: correctly reinitialize repository version Caleb White
2024-10-28 19:10 ` [PATCH v2 5/5] worktree: add `relativeWorktrees` extension Caleb White
2024-10-29 14:55 ` [PATCH v2 0/5] Allow relative worktree linking to be configured by the user Phillip Wood
2024-10-30  5:13   ` Caleb White

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241028-wt_relative_options-v2-0-33a5021bd7bb@pm.me \
    --to=cdwhite3@pm.me \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=me@ttaylorr.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).