Re: [PATCH v2 1/5] worktree: add CLI/config options for relative path linking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Caleb

On 30/10/2024 20:21, Caleb White wrote:
On Wed Oct 30, 2024 at 3:16 PM CDT, Taylor Blau wrote:
On Wed, Oct 30, 2024 at 05:27:33AM +0000, Caleb White wrote:
diff --git a/builtin/worktree.c b/builtin/worktree.c
index dae63dedf4cac2621f51f95a39aa456b33acd894..c1130be5890c905c0b648782a834eb8dfcd79ba5 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -134,6 +134,9 @@ static int git_worktree_config(const char *var, const char *value,
   	if (!strcmp(var, "worktree.guessremote")) {
   		guess_remote = git_config_bool(var, value);
   		return 0;
+	} else if (!strcmp(var, "worktree.userelativepaths")) {
+		use_relative_paths = git_config_bool(var, value);

As we're trying to remove global variables from libgit.a as part of the
libification effort I'd be much happier if "use_relative_paths" was
declared as a "static int" in this file and then passed down to the
functions that need it rather than declaring it as a global in "worktree.c".

I can create a getter/setter in the worktree API to handle this, but
I'd rather not pass it as an argument to every function that needs it as
that would be a lot of changes. All of these functions would need their
signatures updated to include the new parameter:

- `add_worktree()`
- `update_worktree_location()`
- `repair_worktree_at_path()`
- `repair_worktrees()`
- `repair_worktree()`
- `write_worktree_linking_files()`

There is no reason to have a "getter" and "setter" for a extern'd
variable.

I agree that it would be preferable to have use_relative_paths be a
static int within this compilation unit and to pass it to the above
functions.

If I created a getter/setter then the variable would no longer be
extern'd.

To be clear, you're advocating that I change the function signature
for all of the functions listed above to include the new parameter? That
seems like a lot of parameter bloat

It's a bit of a pain to have to change the function signatures and pass the parameter down but it's not difficult to do.

when I could just set the variable
in this compilation unit and access it directly in the
`write_worktree_linking_files()` function.

The problem with that is that the variable is still effectively global. The aim of the libification work is to be able to work on more than one repository from a single process while respecting each repository's config settings.

Best Wishes

Phillip

Best,
Caleb






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux