git/builtin
Patrick Steinhardt 81654d27bf builtin/remote: cast away constness in get_head_names()
In `get_head_names()`, we assign the "refs/heads/*" string constant to
`struct refspec_item::{src,dst}`, which are both non-constant pointers.
Ideally, we'd refactor the code such that both of these fields were
constant. But `struct refspec_item` is used for two different usecases
with conflicting requirements:

  - To query for a source or destination based on the given refspec. The
    caller either sets `src` or `dst` as the branch that we want to
    search for, and the respective other field gets populated. The
    fields should be constant when being used as a query parameter,
    which is owned by the caller, and non-constant when being used as an
    out parameter, which is owned by the refspec item. This is is
    contradictory in itself already.

  - To store refspec items with their respective source and destination
    branches, in which case both fields should be owned by the struct.

Ideally, we'd split up this interface to clearly separate between
querying and storing, which would enable us to clarify lifetimes of the
strings. This would be a much bigger undertaking though.

Instead, accept the status quo for now and cast away the constness of
the source and destination patterns. We know that those are not being
written to or freed, so while this is ugly it certainly is fine for now.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-06-07 10:30:50 -07:00
..
add.c Merge branch 'ps/the-index-is-no-more' 2024-05-08 10:18:44 -07:00
am.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
annotate.c
apply.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
archive.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:33 -08:00
bisect.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
blame.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
branch.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
bugreport.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
bundle.c Merge branch 'rs/bundle-parseopt-cleanup' 2023-08-07 11:57:18 -07:00
cat-file.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
check-attr.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
check-ignore.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
check-mailmap.c builtin.h: remove unneccessary includes 2023-06-21 13:39:54 -07:00
check-ref-format.c cache.h: remove this no-longer-used header 2023-06-21 13:39:53 -07:00
checkout--worker.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
checkout-index.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
checkout.c checkout: clarify memory ownership in unique_tracking_name() 2024-05-27 11:19:58 -07:00
clean.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
clone.c refspec: remove global tag refspec structure 2024-06-07 10:30:49 -07:00
column.c column: disallow negative padding 2024-02-13 10:18:50 -08:00
commit-graph.c Merge branch 'ja/doc-placeholders-fix' 2024-02-08 13:20:34 -08:00
commit-tree.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
commit.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
config.c Merge branch 'ps/leakfixes' into ps/no-writable-strings 2024-05-29 09:32:24 -07:00
count-objects.c count-objects: mark unused parameter in alternates callback 2023-07-13 17:24:00 -07:00
credential-cache--daemon.c Merge branch 'bc/credential-scheme-enhancement' 2024-05-08 10:18:44 -07:00
credential-cache.c Merge branch 'bc/credential-scheme-enhancement' 2024-05-08 10:18:44 -07:00
credential-store.c credential: gate new fields on capability 2024-04-16 22:39:06 -07:00
credential.c builtin/credential: clear credential before exit 2024-05-27 11:20:01 -07:00
describe.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
diagnose.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
diff-files.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
diff-index.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
diff-tree.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
diff.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
difftool.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
fast-export.c use xstrncmpz() 2024-02-12 09:32:41 -08:00
fast-import.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
fetch-pack.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
fetch.c refspec: remove global tag refspec structure 2024-06-07 10:30:49 -07:00
fmt-merge-msg.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
for-each-ref.c ref-filter: properly distinuish pseudo and root refs 2024-05-15 07:30:52 -07:00
for-each-repo.c for-each-repo: optionally keep going on an error 2024-04-24 10:46:03 -07:00
fsck.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
fsmonitor--daemon.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:33 -08:00
gc.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
get-tar-commit-id.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
grep.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
hash-object.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
help.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
hook.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
index-pack.c unpack: replace xwrite() loop with write_in_full() 2024-03-02 11:12:16 -08:00
init-db.c Sync with 2.40.2 2024-04-19 12:38:42 +02:00
interpret-trailers.c Merge branch 'la/hide-trailer-info' 2024-05-23 11:04:27 -07:00
log.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
ls-files.c factor out strbuf_expand_bad_format() 2024-03-25 11:59:24 -07:00
ls-remote.c Merge branch 'en/header-cleanup' 2024-01-08 14:05:15 -08:00
ls-tree.c Merge branch 'rs/strbuf-expand-bad-format' 2024-04-03 10:56:20 -07:00
mailinfo.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
mailsplit.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
merge-base.c commit-reach(repo_get_merge_bases_many_dirty): pass on errors 2024-02-29 08:06:01 -08:00
merge-file.c merge-file: add --diff-algorithm option 2023-11-22 14:23:06 +09:00
merge-index.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
merge-ours.c diff.h: remove unnecessary include of oidset.h 2023-06-21 13:39:53 -07:00
merge-recursive.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
merge-tree.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
merge.c config: clarify memory ownership in git_config_string() 2024-05-27 11:20:00 -07:00
mktag.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:33 -08:00
mktree.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
multi-pack-index.c midx: disable replace objects 2024-04-17 12:35:41 -07:00
mv.c builtin/mv: fix leaks for submodule gitfile paths 2024-05-27 11:20:03 -07:00
name-rev.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
notes.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
pack-objects.c Merge branch 'tb/pack-bitmap-write-cleanups' 2024-05-28 11:17:07 -07:00
pack-redundant.c object-store-ll.h: split this header out of object-store.h 2023-06-21 13:39:54 -07:00
pack-refs.c builtin/pack-refs: introduce new "--auto" flag 2024-03-25 09:54:07 -07:00
patch-id.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
prune-packed.c treewide: be explicit about dependence on gettext.h 2023-03-21 10:56:51 -07:00
prune.c Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
pull.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
push.c Merge branch 'en/header-cleanup' into maint-2.43 2024-02-08 16:22:10 -08:00
range-diff.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
read-tree.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
rebase.c config: clarify memory ownership in git_config_string() 2024-05-27 11:20:00 -07:00
receive-pack.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
reflog.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
remote-ext.c builtins: annotate always-empty prefix parameters 2023-03-28 14:11:24 -07:00
remote-fd.c builtins: annotate always-empty prefix parameters 2023-03-28 14:11:24 -07:00
remote.c builtin/remote: cast away constness in get_head_names() 2024-06-07 10:30:50 -07:00
repack.c config: clarify memory ownership in git_config_string() 2024-05-27 11:20:00 -07:00
replace.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
replay.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
rerere.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
reset.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
rev-list.c Merge branch 'jk/pretty-subject-cleanup' 2024-04-01 13:21:34 -07:00
rev-parse.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
revert.c global: improve const correctness when assigning string constants 2024-06-07 10:30:48 -07:00
rm.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00
send-pack.c Merge branch 'en/header-cleanup' into maint-2.43 2024-02-08 16:22:10 -08:00
shortlog.c shortlog: stop setting pp.print_email_subject 2024-03-19 17:54:15 -07:00
show-branch.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
show-index.c cache.h: remove this no-longer-used header 2023-06-21 13:39:53 -07:00
show-ref.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
sparse-checkout.c Merge branch 'en/header-cleanup' into maint-2.43 2024-02-08 16:22:10 -08:00
stash.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
stripspace.c strbuf: accept a comment string for strbuf_add_commented_lines() 2024-03-12 13:28:10 -07:00
submodule--helper.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
symbolic-ref.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
tag.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
unpack-file.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
unpack-objects.c unpack: replace xwrite() loop with write_in_full() 2024-03-02 11:12:16 -08:00
update-index.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
update-ref.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
update-server-info.c cache.h: remove this no-longer-used header 2023-06-21 13:39:53 -07:00
upload-archive.c repository: remove unnecessary include of path.h 2023-06-21 13:39:53 -07:00
upload-pack.c Sync with 2.44.1 2024-04-29 20:42:30 +02:00
var.c config: rename global config function 2024-01-18 12:17:41 -08:00
verify-commit.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
verify-pack.c builtin.h: remove unneccessary includes 2023-06-21 13:39:54 -07:00
verify-tag.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
worktree.c checkout: clarify memory ownership in unique_tracking_name() 2024-05-27 11:19:58 -07:00
write-tree.c builtin: stop using the_index 2024-04-18 12:30:42 -07:00