From e4373a7e553f8523db3e99ea316e1c25d30cc059 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Wed, 25 Mar 2026 14:21:50 +0000 Subject: *: objectid -> object/id --- cmd/index-pack/main.go | 2 +- cmd/show-object/main.go | 2 +- commitgraph/read/commitat.go | 2 +- commitgraph/read/commits.go | 2 +- commitgraph/read/errors.go | 2 +- commitgraph/read/hash.go | 2 +- commitgraph/read/iterators.go | 2 +- commitgraph/read/layer_lookup.go | 2 +- commitgraph/read/layer_open.go | 2 +- commitgraph/read/layer_parse.go | 2 +- commitgraph/read/lookup.go | 2 +- commitgraph/read/oidat.go | 2 +- commitgraph/read/open.go | 2 +- commitgraph/read/open_chain.go | 2 +- commitgraph/read/open_single.go | 2 +- commitgraph/read/read_test.go | 2 +- commitgraph/read/reader.go | 2 +- commitquery/ancestor.go | 2 +- commitquery/ancestor_integration_test.go | 2 +- commitquery/ancestor_unit_test.go | 2 +- commitquery/commit.go | 2 +- commitquery/compare.go | 2 +- commitquery/context.go | 2 +- commitquery/generation.go | 2 +- commitquery/merge_bases.go | 2 +- commitquery/mergebase_integration_test.go | 2 +- commitquery/mergebase_unit_test.go | 2 +- commitquery/node.go | 2 +- commitquery/oid.go | 2 +- commitquery/parent.go | 2 +- config/config_test.go | 2 +- diff/trees/diff.go | 2 +- diff/trees/diff_recursive.go | 2 +- diff/trees/diff_test.go | 2 +- errors/missing.go | 2 +- errors/type.go | 2 +- internal/peel/peel.go | 2 +- internal/testgit/algorithms.go | 2 +- internal/testgit/repo.go | 2 +- internal/testgit/repo_cat_file.go | 2 +- internal/testgit/repo_commit_tree.go | 2 +- internal/testgit/repo_commit_tree_env.go | 2 +- internal/testgit/repo_from_fixture.go | 2 +- internal/testgit/repo_hash_object.go | 2 +- internal/testgit/repo_make_commit.go | 2 +- internal/testgit/repo_make_many_objects_history.go | 2 +- internal/testgit/repo_make_single_file_tree.go | 2 +- internal/testgit/repo_mktree.go | 2 +- internal/testgit/repo_new.go | 2 +- internal/testgit/repo_properties.go | 2 +- internal/testgit/repo_refs.go | 2 +- internal/testgit/repo_remove_loose_object.go | 2 +- internal/testgit/repo_rev_list.go | 2 +- internal/testgit/repo_rev_parse.go | 2 +- internal/testgit/repo_tag_annotated.go | 2 +- object/blob_parse_test.go | 2 +- object/blob_serialize_test.go | 2 +- object/commit.go | 2 +- object/commit_parse.go | 2 +- object/commit_parse_test.go | 2 +- object/commit_serialize_test.go | 2 +- object/id/algorithms.go | 140 ++++++++++++++++ object/id/errors.go | 10 ++ object/id/objectid.go | 113 +++++++++++++ object/id/objectid_test.go | 184 +++++++++++++++++++++ object/parse.go | 2 +- object/resolve/exact_blob.go | 2 +- object/resolve/exact_blob_reader.go | 2 +- object/resolve/exact_commit.go | 2 +- object/resolve/exact_commit_reader.go | 2 +- object/resolve/exact_object.go | 2 +- object/resolve/exact_reader.go | 2 +- object/resolve/exact_tag.go | 2 +- object/resolve/exact_tag_reader.go | 2 +- object/resolve/exact_tree.go | 2 +- object/resolve/exact_tree_reader.go | 2 +- object/resolve/object_parse.go | 2 +- object/resolve/path.go | 2 +- object/resolve/peel_to_blob.go | 2 +- object/resolve/peel_to_blob_id.go | 2 +- object/resolve/peel_to_blob_reader.go | 2 +- object/resolve/peel_to_commit.go | 2 +- object/resolve/peel_to_commit_id.go | 2 +- object/resolve/peel_to_commit_reader.go | 2 +- object/resolve/peel_to_tag.go | 2 +- object/resolve/peel_to_tag_id.go | 2 +- object/resolve/peel_to_tag_reader.go | 2 +- object/resolve/peel_to_tree.go | 2 +- object/resolve/peel_to_tree_id.go | 2 +- object/resolve/peel_to_tree_reader.go | 2 +- object/resolve/treefs.go | 2 +- object/resolve/treefs_entry.go | 2 +- object/resolve/treefs_new.go | 2 +- object/resolve/treefs_test.go | 2 +- object/stored/stored.go | 2 +- object/tag.go | 2 +- object/tag_parse.go | 2 +- object/tag_parse_test.go | 2 +- object/tag_serialize_test.go | 2 +- object/tree.go | 2 +- object/tree_parse.go | 2 +- object/tree_parse_test.go | 2 +- object/tree_serialize_test.go | 2 +- objectid/algorithms.go | 140 ---------------- objectid/errors.go | 10 -- objectid/objectid.go | 113 ------------- objectid/objectid_test.go | 184 --------------------- objectstore/chain/bytes.go | 2 +- objectstore/chain/header.go | 2 +- objectstore/chain/reader.go | 2 +- objectstore/chain/size.go | 2 +- objectstore/loose/helpers_test.go | 2 +- objectstore/loose/paths.go | 2 +- objectstore/loose/read_bytes.go | 2 +- objectstore/loose/read_header.go | 2 +- objectstore/loose/read_reader.go | 2 +- objectstore/loose/read_size.go | 2 +- objectstore/loose/read_test.go | 2 +- objectstore/loose/store.go | 2 +- objectstore/loose/write_bytes.go | 2 +- objectstore/loose/write_reader.go | 2 +- objectstore/loose/write_test.go | 2 +- objectstore/loose/write_writer_finalize.go | 2 +- objectstore/memory/add.go | 2 +- objectstore/memory/algorithm.go | 2 +- objectstore/memory/read_bytes.go | 2 +- objectstore/memory/read_header.go | 2 +- objectstore/memory/read_reader.go | 2 +- objectstore/memory/read_size.go | 2 +- objectstore/memory/store.go | 2 +- objectstore/mix/bytes.go | 2 +- objectstore/mix/header.go | 2 +- objectstore/mix/reader.go | 2 +- objectstore/mix/size.go | 2 +- objectstore/objectstore.go | 2 +- objectstore/packed/entry_parse.go | 2 +- objectstore/packed/helpers_test.go | 2 +- objectstore/packed/idx.go | 2 +- objectstore/packed/idx_lookup.go | 2 +- objectstore/packed/idx_open.go | 2 +- objectstore/packed/new.go | 2 +- objectstore/packed/pack_idx_checksum.go | 2 +- objectstore/packed/read_bytes.go | 2 +- objectstore/packed/read_header.go | 2 +- objectstore/packed/read_reader.go | 2 +- objectstore/packed/read_size.go | 2 +- objectstore/packed/read_test.go | 2 +- objectstore/packed/store.go | 2 +- objectstore/packed/store_lookup.go | 2 +- packfile/ingest/api.go | 2 +- packfile/ingest/drain.go | 2 +- packfile/ingest/entry_prefix.go | 2 +- packfile/ingest/hash.go | 2 +- packfile/ingest/ingest_test.go | 2 +- packfile/ingest/records.go | 2 +- packfile/ingest/rewrite_header_trailer.go | 2 +- packfile/ingest/scan.go | 2 +- packfile/ingest/state.go | 2 +- packfile/ingest/thin_append.go | 2 +- packfile/ingest/thin_unresolved.go | 2 +- protocol/v0v1/server/advertise.go | 2 +- protocol/v0v1/server/advertise_test.go | 2 +- protocol/v0v1/server/advertised_ref.go | 2 +- protocol/v0v1/server/helpers_test.go | 2 +- protocol/v0v1/server/receivepack/capabilities.go | 2 +- protocol/v0v1/server/receivepack/helpers_test.go | 2 +- protocol/v0v1/server/receivepack/parse_test.go | 2 +- .../v0v1/server/receivepack/report_status_test.go | 2 +- protocol/v0v1/server/receivepack/session.go | 2 +- protocol/v0v1/server/receivepack/types.go | 2 +- protocol/v0v1/server/session.go | 2 +- reachability/connected.go | 2 +- reachability/helpers.go | 2 +- reachability/integration_test.go | 2 +- reachability/unit_test.go | 2 +- reachability/walk.go | 2 +- reachability/walk_expand_commits_graph.go | 2 +- reachability/walk_item.go | 2 +- reachability/walk_seq.go | 2 +- reachability/walk_verify.go | 2 +- receivepack/hook.go | 2 +- receivepack/hooks/reject_force_push.go | 2 +- receivepack/int_test.go | 2 +- receivepack/options.go | 2 +- receivepack/service/apply.go | 2 +- receivepack/service/command.go | 2 +- receivepack/service/command_result.go | 2 +- receivepack/service/hook.go | 2 +- receivepack/service/options.go | 2 +- receivepack/service/quarantine_test.go | 2 +- receivepack/service/service_test.go | 2 +- receivepack/service/update.go | 2 +- ref/detached.go | 2 +- refstore/batch.go | 2 +- refstore/files/batch_queue_ops.go | 2 +- refstore/files/batch_test.go | 2 +- refstore/files/helpers_test.go | 2 +- refstore/files/new.go | 2 +- refstore/files/packed_delete_test.go | 2 +- refstore/files/packed_parse.go | 2 +- refstore/files/read_loose.go | 2 +- refstore/files/resolve_list_test.go | 2 +- refstore/files/store.go | 2 +- refstore/files/transaction_dirs_test.go | 2 +- refstore/files/transaction_names_test.go | 2 +- refstore/files/transaction_pseudoref_test.go | 2 +- refstore/files/transaction_queue_ops.go | 2 +- refstore/files/transaction_symbolic_test.go | 2 +- refstore/files/transaction_update_test.go | 2 +- refstore/files/update_direct_ref.go | 2 +- refstore/files/update_operation_queue.go | 2 +- refstore/files/update_validate.go | 2 +- refstore/files/worktree_test.go | 2 +- refstore/transaction.go | 2 +- repository/algorithm.go | 2 +- repository/objects.go | 2 +- repository/refs_test.go | 2 +- repository/repository.go | 2 +- repository/stored_test.go | 2 +- repository/traversal_test.go | 2 +- repository/write_loose_test.go | 2 +- 221 files changed, 660 insertions(+), 660 deletions(-) create mode 100644 object/id/algorithms.go create mode 100644 object/id/errors.go create mode 100644 object/id/objectid.go create mode 100644 object/id/objectid_test.go delete mode 100644 objectid/algorithms.go delete mode 100644 objectid/errors.go delete mode 100644 objectid/objectid.go delete mode 100644 objectid/objectid_test.go diff --git a/cmd/index-pack/main.go b/cmd/index-pack/main.go index 37458744..0b52add2 100644 --- a/cmd/index-pack/main.go +++ b/cmd/index-pack/main.go @@ -8,7 +8,7 @@ import ( "os" "path/filepath" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/packfile/ingest" "codeberg.org/lindenii/furgit/repository" diff --git a/cmd/show-object/main.go b/cmd/show-object/main.go index 0eeebcc1..d181bfca 100644 --- a/cmd/show-object/main.go +++ b/cmd/show-object/main.go @@ -10,7 +10,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" "codeberg.org/lindenii/furgit/repository" ) diff --git a/commitgraph/read/commitat.go b/commitgraph/read/commitat.go index bcd115f8..a39c5ccd 100644 --- a/commitgraph/read/commitat.go +++ b/commitgraph/read/commitat.go @@ -4,7 +4,7 @@ import ( "encoding/binary" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // CommitAt returns decoded commit-graph metadata at one position. diff --git a/commitgraph/read/commits.go b/commitgraph/read/commits.go index 38dffe7b..48984ecb 100644 --- a/commitgraph/read/commits.go +++ b/commitgraph/read/commits.go @@ -1,6 +1,6 @@ package read -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Commit stores decoded commit-graph record data. type Commit struct { diff --git a/commitgraph/read/errors.go b/commitgraph/read/errors.go index 40315af7..0a32a368 100644 --- a/commitgraph/read/errors.go +++ b/commitgraph/read/errors.go @@ -3,7 +3,7 @@ package read import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // NotFoundError reports a missing commit graph entry by object ID. diff --git a/commitgraph/read/hash.go b/commitgraph/read/hash.go index e9543eac..3a525afe 100644 --- a/commitgraph/read/hash.go +++ b/commitgraph/read/hash.go @@ -5,7 +5,7 @@ import ( "fmt" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // HashVersion returns the commit-graph hash version. diff --git a/commitgraph/read/iterators.go b/commitgraph/read/iterators.go index d4ad9105..85c56ff1 100644 --- a/commitgraph/read/iterators.go +++ b/commitgraph/read/iterators.go @@ -4,7 +4,7 @@ import ( "iter" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // AllPositions iterates all commit positions in native layer order. diff --git a/commitgraph/read/layer_lookup.go b/commitgraph/read/layer_lookup.go index 9a03505a..84095788 100644 --- a/commitgraph/read/layer_lookup.go +++ b/commitgraph/read/layer_lookup.go @@ -5,7 +5,7 @@ import ( "encoding/binary" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func layerLookup(layer *layer, oid objectid.ObjectID) (uint32, bool) { diff --git a/commitgraph/read/layer_open.go b/commitgraph/read/layer_open.go index c0626f6e..3ecd4672 100644 --- a/commitgraph/read/layer_open.go +++ b/commitgraph/read/layer_open.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/commitgraph" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func openLayer(root *os.Root, relPath string, algo objectid.Algorithm) (*layer, error) { diff --git a/commitgraph/read/layer_parse.go b/commitgraph/read/layer_parse.go index 62e8a70b..2aa71428 100644 --- a/commitgraph/read/layer_parse.go +++ b/commitgraph/read/layer_parse.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/commitgraph" "codeberg.org/lindenii/furgit/commitgraph/bloom" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func parseLayer(layer *layer, algo objectid.Algorithm) error { //nolint:maintidx diff --git a/commitgraph/read/lookup.go b/commitgraph/read/lookup.go index 6ba25a18..5f1b08f6 100644 --- a/commitgraph/read/lookup.go +++ b/commitgraph/read/lookup.go @@ -2,7 +2,7 @@ package read import ( "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Lookup resolves one object ID to one graph position. diff --git a/commitgraph/read/oidat.go b/commitgraph/read/oidat.go index af3f31f0..908cbc1c 100644 --- a/commitgraph/read/oidat.go +++ b/commitgraph/read/oidat.go @@ -2,7 +2,7 @@ package read import ( "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // OIDAt returns object ID at one position. diff --git a/commitgraph/read/open.go b/commitgraph/read/open.go index cfcb4ff8..9c708b49 100644 --- a/commitgraph/read/open.go +++ b/commitgraph/read/open.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Open opens commit-graph data from one objects root. diff --git a/commitgraph/read/open_chain.go b/commitgraph/read/open_chain.go index 8d5ec268..b55f3e57 100644 --- a/commitgraph/read/open_chain.go +++ b/commitgraph/read/open_chain.go @@ -8,7 +8,7 @@ import ( "strings" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func openChain(root *os.Root, algo objectid.Algorithm) (*Reader, error) { diff --git a/commitgraph/read/open_single.go b/commitgraph/read/open_single.go index f20cd166..9ad6607f 100644 --- a/commitgraph/read/open_single.go +++ b/commitgraph/read/open_single.go @@ -4,7 +4,7 @@ import ( "os" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func openSingle(root *os.Root, algo objectid.Algorithm) (*Reader, error) { diff --git a/commitgraph/read/read_test.go b/commitgraph/read/read_test.go index dc14377d..bf87ec5d 100644 --- a/commitgraph/read/read_test.go +++ b/commitgraph/read/read_test.go @@ -11,7 +11,7 @@ import ( "codeberg.org/lindenii/furgit/commitgraph/read" "codeberg.org/lindenii/furgit/internal/intconv" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func fixtureRepoPath(t *testing.T, algo objectid.Algorithm, name string) string { diff --git a/commitgraph/read/reader.go b/commitgraph/read/reader.go index ab68f31c..d5c84a70 100644 --- a/commitgraph/read/reader.go +++ b/commitgraph/read/reader.go @@ -1,6 +1,6 @@ package read -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Reader provides read-only access to one mmap-backed commit-graph snapshot. // diff --git a/commitquery/ancestor.go b/commitquery/ancestor.go index 671ea460..4f182a95 100644 --- a/commitquery/ancestor.go +++ b/commitquery/ancestor.go @@ -1,6 +1,6 @@ package commitquery -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // IsAncestor reports whether ancestor is reachable from descendant through // commit parent edges. diff --git a/commitquery/ancestor_integration_test.go b/commitquery/ancestor_integration_test.go index a25697aa..8db680e6 100644 --- a/commitquery/ancestor_integration_test.go +++ b/commitquery/ancestor_integration_test.go @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/commitquery" giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestIsMatchesGitMergeBase(t *testing.T) { diff --git a/commitquery/ancestor_unit_test.go b/commitquery/ancestor_unit_test.go index b7e52253..20a81313 100644 --- a/commitquery/ancestor_unit_test.go +++ b/commitquery/ancestor_unit_test.go @@ -8,7 +8,7 @@ import ( giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/memory" objecttype "codeberg.org/lindenii/furgit/object/type" diff --git a/commitquery/commit.go b/commitquery/commit.go index f4709270..8e60e3fd 100644 --- a/commitquery/commit.go +++ b/commitquery/commit.go @@ -2,7 +2,7 @@ package commitquery import ( commitgraphread "codeberg.org/lindenii/furgit/commitgraph/read" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // commitData stores the metadata needed by commit-domain queries. diff --git a/commitquery/compare.go b/commitquery/compare.go index f64b5b3f..21dc5eb9 100644 --- a/commitquery/compare.go +++ b/commitquery/compare.go @@ -1,6 +1,6 @@ package commitquery -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Compare compares two internal nodes using merge-base queue ordering. func (query *Query) compare(left, right nodeIndex) int { diff --git a/commitquery/context.go b/commitquery/context.go index 8e19138e..80b9ed33 100644 --- a/commitquery/context.go +++ b/commitquery/context.go @@ -3,7 +3,7 @@ package commitquery import ( commitgraphread "codeberg.org/lindenii/furgit/commitgraph/read" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/commitquery/generation.go b/commitquery/generation.go index 05228b29..39ddd2e9 100644 --- a/commitquery/generation.go +++ b/commitquery/generation.go @@ -3,7 +3,7 @@ package commitquery import ( "math" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // EffectiveGeneration returns one node's generation value. diff --git a/commitquery/merge_bases.go b/commitquery/merge_bases.go index c63bb82f..b7021814 100644 --- a/commitquery/merge_bases.go +++ b/commitquery/merge_bases.go @@ -3,7 +3,7 @@ package commitquery import ( "slices" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // MergeBases reports all merge bases in Git's merge-base --all order. diff --git a/commitquery/mergebase_integration_test.go b/commitquery/mergebase_integration_test.go index 30477454..f19468eb 100644 --- a/commitquery/mergebase_integration_test.go +++ b/commitquery/mergebase_integration_test.go @@ -8,7 +8,7 @@ import ( "codeberg.org/lindenii/furgit/commitquery" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestQueryMatchesGitMergeBaseAll(t *testing.T) { diff --git a/commitquery/mergebase_unit_test.go b/commitquery/mergebase_unit_test.go index 7f9c0b82..bedd936d 100644 --- a/commitquery/mergebase_unit_test.go +++ b/commitquery/mergebase_unit_test.go @@ -11,7 +11,7 @@ import ( giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/memory" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/commitquery/node.go b/commitquery/node.go index cd357631..5b1c7142 100644 --- a/commitquery/node.go +++ b/commitquery/node.go @@ -2,7 +2,7 @@ package commitquery import ( commitgraphread "codeberg.org/lindenii/furgit/commitgraph/read" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // nodeIndex identifies one internal query node. diff --git a/commitquery/oid.go b/commitquery/oid.go index e83d350c..c6c8d23a 100644 --- a/commitquery/oid.go +++ b/commitquery/oid.go @@ -7,7 +7,7 @@ import ( giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/internal/peel" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/commitquery/parent.go b/commitquery/parent.go index 1c59e102..41877975 100644 --- a/commitquery/parent.go +++ b/commitquery/parent.go @@ -2,7 +2,7 @@ package commitquery import ( commitgraphread "codeberg.org/lindenii/furgit/commitgraph/read" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // parentRef references one commit parent. diff --git a/config/config_test.go b/config/config_test.go index 3f166202..86b8be50 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -8,7 +8,7 @@ import ( "codeberg.org/lindenii/furgit/config" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func openConfig(t *testing.T, testRepo *testgit.TestRepo) *os.File { diff --git a/diff/trees/diff.go b/diff/trees/diff.go index 7736d08f..742d7397 100644 --- a/diff/trees/diff.go +++ b/diff/trees/diff.go @@ -3,7 +3,7 @@ package trees import ( "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Diff compares two trees and returns recursive differences. diff --git a/diff/trees/diff_recursive.go b/diff/trees/diff_recursive.go index 7c20c9d6..8ad4caf1 100644 --- a/diff/trees/diff_recursive.go +++ b/diff/trees/diff_recursive.go @@ -2,7 +2,7 @@ package trees import ( "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func diffRecursive(a, b *object.Tree, prefix []byte, readTree func(objectid.ObjectID) (*object.Tree, error), out *[]Entry) error { diff --git a/diff/trees/diff_test.go b/diff/trees/diff_test.go index a6b51082..b5c486c9 100644 --- a/diff/trees/diff_test.go +++ b/diff/trees/diff_test.go @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/diff/trees" "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/loose" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/errors/missing.go b/errors/missing.go index 3ca27583..9efc029a 100644 --- a/errors/missing.go +++ b/errors/missing.go @@ -3,7 +3,7 @@ package errors import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ObjectMissingError indicates that a referenced object is absent from the diff --git a/errors/type.go b/errors/type.go index ef80e482..19bdf3cd 100644 --- a/errors/type.go +++ b/errors/type.go @@ -3,7 +3,7 @@ package errors import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/internal/peel/peel.go b/internal/peel/peel.go index c50b3d7b..2f27d410 100644 --- a/internal/peel/peel.go +++ b/internal/peel/peel.go @@ -6,7 +6,7 @@ import ( giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/internal/testgit/algorithms.go b/internal/testgit/algorithms.go index 5534aad0..aea4dc12 100644 --- a/internal/testgit/algorithms.go +++ b/internal/testgit/algorithms.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ForEachAlgorithm runs a subtest for every supported algorithm. diff --git a/internal/testgit/repo.go b/internal/testgit/repo.go index 3d0267d2..72831bd6 100644 --- a/internal/testgit/repo.go +++ b/internal/testgit/repo.go @@ -1,7 +1,7 @@ // Package testgit provides helpers for integration tests with upstream git(1). package testgit -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // TestRepo is a temporary git repository harness for integration tests. type TestRepo struct { diff --git a/internal/testgit/repo_cat_file.go b/internal/testgit/repo_cat_file.go index 1325cf6f..7dbd2c43 100644 --- a/internal/testgit/repo_cat_file.go +++ b/internal/testgit/repo_cat_file.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // CatFile returns raw output from git cat-file. diff --git a/internal/testgit/repo_commit_tree.go b/internal/testgit/repo_commit_tree.go index 5eee21ba..3a5a75ac 100644 --- a/internal/testgit/repo_commit_tree.go +++ b/internal/testgit/repo_commit_tree.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // CommitTree creates a commit from a tree and message, optionally with parents. diff --git a/internal/testgit/repo_commit_tree_env.go b/internal/testgit/repo_commit_tree_env.go index ee949b5c..fbddf26f 100644 --- a/internal/testgit/repo_commit_tree_env.go +++ b/internal/testgit/repo_commit_tree_env.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // CommitTreeWithEnv creates one commit from a tree and message, optionally with diff --git a/internal/testgit/repo_from_fixture.go b/internal/testgit/repo_from_fixture.go index 4a022bc5..632de12a 100644 --- a/internal/testgit/repo_from_fixture.go +++ b/internal/testgit/repo_from_fixture.go @@ -5,7 +5,7 @@ import ( "os" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // NewRepoFromFixture copies one existing repository fixture into a temp dir. diff --git a/internal/testgit/repo_hash_object.go b/internal/testgit/repo_hash_object.go index bc2def72..75f1a7ab 100644 --- a/internal/testgit/repo_hash_object.go +++ b/internal/testgit/repo_hash_object.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // HashObject hashes and writes an object and returns its object ID. diff --git a/internal/testgit/repo_make_commit.go b/internal/testgit/repo_make_commit.go index c8bdc428..32a063f7 100644 --- a/internal/testgit/repo_make_commit.go +++ b/internal/testgit/repo_make_commit.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // MakeCommit creates a commit over a single-file tree and returns (blobID, treeID, commitID). diff --git a/internal/testgit/repo_make_many_objects_history.go b/internal/testgit/repo_make_many_objects_history.go index 970d1992..f71ead2c 100644 --- a/internal/testgit/repo_make_many_objects_history.go +++ b/internal/testgit/repo_make_many_objects_history.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) const ( diff --git a/internal/testgit/repo_make_single_file_tree.go b/internal/testgit/repo_make_single_file_tree.go index e7a235a7..ace98e8a 100644 --- a/internal/testgit/repo_make_single_file_tree.go +++ b/internal/testgit/repo_make_single_file_tree.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // MakeSingleFileTree writes one blob and one tree entry for it and returns (blobID, treeID). diff --git a/internal/testgit/repo_mktree.go b/internal/testgit/repo_mktree.go index 565a0083..893d211e 100644 --- a/internal/testgit/repo_mktree.go +++ b/internal/testgit/repo_mktree.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Mktree creates a tree from textual mktree input and returns its ID. diff --git a/internal/testgit/repo_new.go b/internal/testgit/repo_new.go index 4ae80393..b7c9968b 100644 --- a/internal/testgit/repo_new.go +++ b/internal/testgit/repo_new.go @@ -4,7 +4,7 @@ import ( "os" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // RepoOptions controls git-init options for test repositories. diff --git a/internal/testgit/repo_properties.go b/internal/testgit/repo_properties.go index b731a6e4..d46e9030 100644 --- a/internal/testgit/repo_properties.go +++ b/internal/testgit/repo_properties.go @@ -1,6 +1,6 @@ package testgit -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Algorithm returns the object ID algorithm configured for this repository. func (testRepo *TestRepo) Algorithm() objectid.Algorithm { diff --git a/internal/testgit/repo_refs.go b/internal/testgit/repo_refs.go index 66e08561..a92e1658 100644 --- a/internal/testgit/repo_refs.go +++ b/internal/testgit/repo_refs.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // UpdateRef updates a ref to point at id. diff --git a/internal/testgit/repo_remove_loose_object.go b/internal/testgit/repo_remove_loose_object.go index ec3d8c2d..345d9db7 100644 --- a/internal/testgit/repo_remove_loose_object.go +++ b/internal/testgit/repo_remove_loose_object.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // RemoveLooseObject removes one loose object file from the repository. diff --git a/internal/testgit/repo_rev_list.go b/internal/testgit/repo_rev_list.go index d3adf5a0..6b0c4f76 100644 --- a/internal/testgit/repo_rev_list.go +++ b/internal/testgit/repo_rev_list.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // RevList runs "git rev-list" with args and parses one object ID per line. diff --git a/internal/testgit/repo_rev_parse.go b/internal/testgit/repo_rev_parse.go index 3bee6108..fcdee605 100644 --- a/internal/testgit/repo_rev_parse.go +++ b/internal/testgit/repo_rev_parse.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // RevParse resolves rev expressions to object IDs. diff --git a/internal/testgit/repo_tag_annotated.go b/internal/testgit/repo_tag_annotated.go index 56bd6a0c..cf6e9b3d 100644 --- a/internal/testgit/repo_tag_annotated.go +++ b/internal/testgit/repo_tag_annotated.go @@ -3,7 +3,7 @@ package testgit import ( "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // TagAnnotated creates an annotated tag object and returns the resulting tag object ID. diff --git a/object/blob_parse_test.go b/object/blob_parse_test.go index 1cf3990f..eb8f2f56 100644 --- a/object/blob_parse_test.go +++ b/object/blob_parse_test.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestBlobParseFromGit(t *testing.T) { diff --git a/object/blob_serialize_test.go b/object/blob_serialize_test.go index 69dbe849..704811ca 100644 --- a/object/blob_serialize_test.go +++ b/object/blob_serialize_test.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestBlobSerialize(t *testing.T) { diff --git a/object/commit.go b/object/commit.go index 214b9c99..f7b0d676 100644 --- a/object/commit.go +++ b/object/commit.go @@ -1,7 +1,7 @@ package object import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/commit_parse.go b/object/commit_parse.go index 31e215de..6578d523 100644 --- a/object/commit_parse.go +++ b/object/commit_parse.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ParseCommit decodes a commit object body. diff --git a/object/commit_parse_test.go b/object/commit_parse_test.go index 4dc1dea1..fae2b4c1 100644 --- a/object/commit_parse_test.go +++ b/object/commit_parse_test.go @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestCommitParseFromGit(t *testing.T) { diff --git a/object/commit_serialize_test.go b/object/commit_serialize_test.go index 70b3fc92..cff47b40 100644 --- a/object/commit_serialize_test.go +++ b/object/commit_serialize_test.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestCommitSerialize(t *testing.T) { diff --git a/object/id/algorithms.go b/object/id/algorithms.go new file mode 100644 index 00000000..404d3bbf --- /dev/null +++ b/object/id/algorithms.go @@ -0,0 +1,140 @@ +package objectid + +import ( + "crypto/sha1" //#nosec gosec + "crypto/sha256" + "hash" +) + +// maxObjectIDSize MUST be >= the largest supported algorithm size. +const maxObjectIDSize = sha256.Size + +// Algorithm identifies the hash algorithm used for Git object IDs. +type Algorithm uint8 + +const ( + AlgorithmUnknown Algorithm = iota + AlgorithmSHA1 + AlgorithmSHA256 +) + +type algorithmDetails struct { + name string + size int + packHashID uint32 + sum func([]byte) ObjectID + new func() hash.Hash +} + +//nolint:gochecknoglobals +var algorithmTable = [...]algorithmDetails{ + AlgorithmUnknown: {}, + AlgorithmSHA1: { + name: "sha1", + size: sha1.Size, + packHashID: 1, + sum: func(data []byte) ObjectID { + sum := sha1.Sum(data) //#nosec G401 + + var id ObjectID + copy(id.data[:], sum[:]) + id.algo = AlgorithmSHA1 + + return id + }, + new: sha1.New, + }, + AlgorithmSHA256: { + name: "sha256", + size: sha256.Size, + packHashID: 2, + sum: func(data []byte) ObjectID { + sum := sha256.Sum256(data) + + var id ObjectID + copy(id.data[:], sum[:]) + id.algo = AlgorithmSHA256 + + return id + }, + new: sha256.New, + }, +} + +var ( + //nolint:gochecknoglobals + algorithmByName = map[string]Algorithm{} + //nolint:gochecknoglobals + supportedAlgorithms []Algorithm +) + +func init() { //nolint:gochecknoinits + for algo := Algorithm(0); int(algo) < len(algorithmTable); algo++ { + info := algorithmTable[algo] + if info.name == "" { + continue + } + + algorithmByName[info.name] = algo + supportedAlgorithms = append(supportedAlgorithms, algo) + } +} + +// SupportedAlgorithms returns all object ID algorithms supported by furgit. +// Do not mutate. +func SupportedAlgorithms() []Algorithm { + return supportedAlgorithms +} + +// ParseAlgorithm parses a canonical algorithm name (e.g. "sha1", "sha256"). +func ParseAlgorithm(s string) (Algorithm, bool) { + algo, ok := algorithmByName[s] + + return algo, ok +} + +// Size returns the hash size in bytes. +func (algo Algorithm) Size() int { + return algo.info().size +} + +// String returns the canonical algorithm name. +func (algo Algorithm) String() string { + inf := algo.info() + if inf.name == "" { + return "unknown" + } + + return inf.name +} + +// HexLen returns the encoded hexadecimal length. +func (algo Algorithm) HexLen() int { + return algo.Size() * 2 +} + +// PackHashID returns the Git pack/rev hash-id encoding for this algorithm. +// +// Unknown algorithms return 0. +func (algo Algorithm) PackHashID() uint32 { + return algo.info().packHashID +} + +// Sum computes an object ID from raw data using the selected algorithm. +func (algo Algorithm) Sum(data []byte) ObjectID { + return algo.info().sum(data) +} + +// New returns a new hash.Hash for this algorithm. +func (algo Algorithm) New() (hash.Hash, error) { + newFn := algo.info().new + if newFn == nil { + return nil, ErrInvalidAlgorithm + } + + return newFn(), nil +} + +func (algo Algorithm) info() algorithmDetails { + return algorithmTable[algo] +} diff --git a/object/id/errors.go b/object/id/errors.go new file mode 100644 index 00000000..8e604c44 --- /dev/null +++ b/object/id/errors.go @@ -0,0 +1,10 @@ +package objectid + +import "errors" + +var ( + // ErrInvalidAlgorithm indicates an unsupported object ID algorithm. + ErrInvalidAlgorithm = errors.New("objectid: invalid algorithm") + // ErrInvalidObjectID indicates malformed object ID data. + ErrInvalidObjectID = errors.New("objectid: invalid object id") +) diff --git a/object/id/objectid.go b/object/id/objectid.go new file mode 100644 index 00000000..8eb82969 --- /dev/null +++ b/object/id/objectid.go @@ -0,0 +1,113 @@ +// Package objectid provides utilities around object IDs and hash algorithms. +package objectid + +import ( + //#nosec G505 + + "bytes" + "encoding/hex" + "fmt" +) + +// ObjectID represents a Git object ID. +// +//nolint:recvcheck +type ObjectID struct { + algo Algorithm + data [maxObjectIDSize]byte +} + +// Algorithm returns the object ID's hash algorithm. +func (id ObjectID) Algorithm() Algorithm { + return id.algo +} + +// Size returns the object ID size in bytes. +func (id ObjectID) Size() int { + return id.algo.Size() +} + +// String returns the canonical hex representation. +func (id ObjectID) String() string { + size := id.Size() + + return hex.EncodeToString(id.data[:size]) +} + +// Bytes returns a copy of the object ID bytes. +func (id ObjectID) Bytes() []byte { + size := id.Size() + + return append([]byte(nil), id.data[:size]...) +} + +// RawBytes returns a direct byte slice view of the object ID bytes. +// +// The returned slice aliases the object ID's internal storage. Callers MUST +// treat it as read-only and MUST NOT modify its contents. +// +// Use Bytes when an independent copy is required. +func (id *ObjectID) RawBytes() []byte { + size := id.Size() + + return id.data[:size:size] +} + +// Compare lexicographically compares two object IDs by their canonical byte +// representation. +func Compare(left, right ObjectID) int { + return bytes.Compare(left.RawBytes(), right.RawBytes()) +} + +// Zero returns the all-zero object ID for the specified algorithm. +func Zero(algo Algorithm) ObjectID { + id, err := FromBytes(algo, make([]byte, algo.Size())) + if err != nil { + panic(err) + } + + return id +} + +// ParseHex parses an object ID from hex for the specified algorithm. +func ParseHex(algo Algorithm, s string) (ObjectID, error) { + var id ObjectID + if algo.Size() == 0 { + return id, ErrInvalidAlgorithm + } + + if len(s)%2 != 0 { + return id, fmt.Errorf("%w: odd hex length %d", ErrInvalidObjectID, len(s)) + } + + if len(s) != algo.HexLen() { + return id, fmt.Errorf("%w: got %d chars, expected %d", ErrInvalidObjectID, len(s), algo.HexLen()) + } + + decoded, err := hex.DecodeString(s) + if err != nil { + return id, fmt.Errorf("%w: decode: %w", ErrInvalidObjectID, err) + } + + copy(id.data[:], decoded) + id.algo = algo + + return id, nil +} + +// FromBytes builds an object ID from raw bytes for the specified algorithm. +func FromBytes(algo Algorithm, b []byte) (ObjectID, error) { + var id ObjectID + if algo.Size() == 0 { + return id, ErrInvalidAlgorithm + } + + if len(b) != algo.Size() { + return id, fmt.Errorf("%w: got %d bytes, expected %d", ErrInvalidObjectID, len(b), algo.Size()) + } + + copy(id.data[:], b) + id.algo = algo + + return id, nil +} diff --git a/object/id/objectid_test.go b/object/id/objectid_test.go new file mode 100644 index 00000000..2559be0a --- /dev/null +++ b/object/id/objectid_test.go @@ -0,0 +1,184 @@ +package objectid_test + +import ( + "bytes" + "strings" + "testing" + + objectid "codeberg.org/lindenii/furgit/object/id" +) + +func TestParseAlgorithm(t *testing.T) { + t.Parallel() + + algo, ok := objectid.ParseAlgorithm("sha1") + if !ok || algo != objectid.AlgorithmSHA1 { + t.Fatalf("ParseAlgorithm(sha1) = (%v,%v)", algo, ok) + } + + algo, ok = objectid.ParseAlgorithm("sha256") + if !ok || algo != objectid.AlgorithmSHA256 { + t.Fatalf("ParseAlgorithm(sha256) = (%v,%v)", algo, ok) + } + + if _, ok := objectid.ParseAlgorithm("md5"); ok { + t.Fatalf("ParseAlgorithm(md5) should fail") + } +} + +func TestParseHexRoundtrip(t *testing.T) { + t.Parallel() + + for _, algo := range objectid.SupportedAlgorithms() { + t.Run(algo.String(), func(t *testing.T) { + t.Parallel() + + hex := strings.Repeat("01", algo.Size()) + + id, err := objectid.ParseHex(algo, hex) + if err != nil { + t.Fatalf("ParseHex failed: %v", err) + } + + if got := id.String(); got != hex { + t.Fatalf("String() = %q, want %q", got, hex) + } + + if got := id.Size(); got != algo.Size() { + t.Fatalf("Size() = %d, want %d", got, algo.Size()) + } + + raw := id.Bytes() + if len(raw) != algo.Size() { + t.Fatalf("Bytes len = %d, want %d", len(raw), algo.Size()) + } + + id2, err := objectid.FromBytes(algo, raw) + if err != nil { + t.Fatalf("FromBytes failed: %v", err) + } + + if id2.String() != hex { + t.Fatalf("FromBytes roundtrip = %q, want %q", id2.String(), hex) + } + }) + } +} + +func TestParseHexErrors(t *testing.T) { + t.Parallel() + + t.Run("unknown algo", func(t *testing.T) { + t.Parallel() + + _, err := objectid.ParseHex(objectid.AlgorithmUnknown, "00") + if err == nil { + t.Fatalf("expected ParseHex error") + } + }) + + for _, algo := range objectid.SupportedAlgorithms() { + t.Run(algo.String(), func(t *testing.T) { + t.Parallel() + + _, err := objectid.ParseHex(algo, strings.Repeat("0", algo.HexLen()-1)) + if err == nil { + t.Fatalf("expected ParseHex odd-len error") + } + + _, err = objectid.ParseHex(algo, strings.Repeat("0", algo.HexLen()-2)) + if err == nil { + t.Fatalf("expected ParseHex wrong-len error") + } + + _, err = objectid.ParseHex(algo, "z"+strings.Repeat("0", algo.HexLen()-1)) + if err == nil { + t.Fatalf("expected ParseHex invalid-hex error") + } + }) + } +} + +func TestFromBytesErrors(t *testing.T) { + t.Parallel() + + _, err := objectid.FromBytes(objectid.AlgorithmUnknown, []byte{1, 2}) + if err == nil { + t.Fatalf("expected FromBytes unknown algo error") + } + + for _, algo := range objectid.SupportedAlgorithms() { + _, err = objectid.FromBytes(algo, []byte{1, 2}) + if err == nil { + t.Fatalf("expected FromBytes wrong size error") + } + } +} + +func TestBytesReturnsCopy(t *testing.T) { + t.Parallel() + + for _, algo := range objectid.SupportedAlgorithms() { + id, err := objectid.ParseHex(algo, strings.Repeat("01", algo.Size())) + if err != nil { + t.Fatalf("ParseHex failed: %v", err) + } + + b1 := id.Bytes() + + b2 := id.Bytes() + if !bytes.Equal(b1, b2) { + t.Fatalf("Bytes mismatch") + } + + b1[0] ^= 0xff + if bytes.Equal(b1, b2) { + t.Fatalf("Bytes should return independent copies") + } + } +} + +func TestRawBytesAliasesStorage(t *testing.T) { + t.Parallel() + + for _, algo := range objectid.SupportedAlgorithms() { + id, err := objectid.ParseHex(algo, strings.Repeat("01", algo.Size())) + if err != nil { + t.Fatalf("ParseHex failed: %v", err) + } + + b := id.RawBytes() + if len(b) != id.Size() { + t.Fatalf("RawBytes len = %d, want %d", len(b), id.Size()) + } + + if cap(b) != len(b) { + t.Fatalf("RawBytes cap = %d, want %d", cap(b), len(b)) + } + + orig := id.String() + b[0] ^= 0xff + + if id.String() == orig { + t.Fatalf("RawBytes should alias object ID storage") + } + } +} + +func TestAlgorithmSum(t *testing.T) { + t.Parallel() + + id1 := objectid.AlgorithmSHA1.Sum([]byte("hello")) + if id1.Algorithm() != objectid.AlgorithmSHA1 || id1.Size() != objectid.AlgorithmSHA1.Size() { + t.Fatalf("sha1 sum produced invalid object id") + } + + id2 := objectid.AlgorithmSHA256.Sum([]byte("hello")) + if id2.Algorithm() != objectid.AlgorithmSHA256 || id2.Size() != objectid.AlgorithmSHA256.Size() { + t.Fatalf("sha256 sum produced invalid object id") + } + + if id1.String() == id2.String() { + t.Fatalf("sha1 and sha256 should differ") + } +} diff --git a/object/parse.go b/object/parse.go index 4a396517..cb75cb43 100644 --- a/object/parse.go +++ b/object/parse.go @@ -4,7 +4,7 @@ import ( "fmt" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/exact_blob.go b/object/resolve/exact_blob.go index 3b880909..6447f06e 100644 --- a/object/resolve/exact_blob.go +++ b/object/resolve/exact_blob.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ExactBlob reads, parses, and wraps the blob at id. diff --git a/object/resolve/exact_blob_reader.go b/object/resolve/exact_blob_reader.go index 5524dfcb..5a702888 100644 --- a/object/resolve/exact_blob_reader.go +++ b/object/resolve/exact_blob_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/exact_commit.go b/object/resolve/exact_commit.go index 0d209253..67538d79 100644 --- a/object/resolve/exact_commit.go +++ b/object/resolve/exact_commit.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ExactCommit reads, parses, and wraps the commit at id. diff --git a/object/resolve/exact_commit_reader.go b/object/resolve/exact_commit_reader.go index dc8a563a..6c05b016 100644 --- a/object/resolve/exact_commit_reader.go +++ b/object/resolve/exact_commit_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/exact_object.go b/object/resolve/exact_object.go index 4fac07cd..48a88c5b 100644 --- a/object/resolve/exact_object.go +++ b/object/resolve/exact_object.go @@ -3,7 +3,7 @@ package resolve import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ExactObject reads, parses, and wraps the object at id without constraining diff --git a/object/resolve/exact_reader.go b/object/resolve/exact_reader.go index 0e7a6112..cf181038 100644 --- a/object/resolve/exact_reader.go +++ b/object/resolve/exact_reader.go @@ -4,7 +4,7 @@ import ( "fmt" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/exact_tag.go b/object/resolve/exact_tag.go index 7af7cb3b..89706b48 100644 --- a/object/resolve/exact_tag.go +++ b/object/resolve/exact_tag.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ExactTag reads, parses, and wraps the tag at id. diff --git a/object/resolve/exact_tag_reader.go b/object/resolve/exact_tag_reader.go index d673237f..e69441d5 100644 --- a/object/resolve/exact_tag_reader.go +++ b/object/resolve/exact_tag_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/exact_tree.go b/object/resolve/exact_tree.go index b4271b52..9dbd8df8 100644 --- a/object/resolve/exact_tree.go +++ b/object/resolve/exact_tree.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ExactTree reads, parses, and wraps the tree at id. diff --git a/object/resolve/exact_tree_reader.go b/object/resolve/exact_tree_reader.go index b4e34dd2..8d9ec821 100644 --- a/object/resolve/exact_tree_reader.go +++ b/object/resolve/exact_tree_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/object_parse.go b/object/resolve/object_parse.go index bc814988..8e8d8bde 100644 --- a/object/resolve/object_parse.go +++ b/object/resolve/object_parse.go @@ -4,7 +4,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/path.go b/object/resolve/path.go index a522d823..1f865403 100644 --- a/object/resolve/path.go +++ b/object/resolve/path.go @@ -4,7 +4,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PathEmptyError indicates that Path received no segments. diff --git a/object/resolve/peel_to_blob.go b/object/resolve/peel_to_blob.go index 59cfcba5..0e727f6f 100644 --- a/object/resolve/peel_to_blob.go +++ b/object/resolve/peel_to_blob.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToBlob peels tags until it reaches a blob. diff --git a/object/resolve/peel_to_blob_id.go b/object/resolve/peel_to_blob_id.go index 3fcd9bc8..c3467cf2 100644 --- a/object/resolve/peel_to_blob_id.go +++ b/object/resolve/peel_to_blob_id.go @@ -3,7 +3,7 @@ package resolve import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/peel_to_blob_reader.go b/object/resolve/peel_to_blob_reader.go index 7ea9f3af..d3bc7f49 100644 --- a/object/resolve/peel_to_blob_reader.go +++ b/object/resolve/peel_to_blob_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToBlobReader returns a reader for the content of the peeled blob at id, diff --git a/object/resolve/peel_to_commit.go b/object/resolve/peel_to_commit.go index 566fa294..d548c48f 100644 --- a/object/resolve/peel_to_commit.go +++ b/object/resolve/peel_to_commit.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToCommit peels tags until it reaches a commit. diff --git a/object/resolve/peel_to_commit_id.go b/object/resolve/peel_to_commit_id.go index 5d02ec1a..972823ce 100644 --- a/object/resolve/peel_to_commit_id.go +++ b/object/resolve/peel_to_commit_id.go @@ -3,7 +3,7 @@ package resolve import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/peel_to_commit_reader.go b/object/resolve/peel_to_commit_reader.go index ab17fe67..6972eff3 100644 --- a/object/resolve/peel_to_commit_reader.go +++ b/object/resolve/peel_to_commit_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToCommitReader returns a reader for the content of the peeled commit at diff --git a/object/resolve/peel_to_tag.go b/object/resolve/peel_to_tag.go index 49fe9108..97a5f2fc 100644 --- a/object/resolve/peel_to_tag.go +++ b/object/resolve/peel_to_tag.go @@ -3,7 +3,7 @@ package resolve import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToTag returns the tag at id without further peeling. diff --git a/object/resolve/peel_to_tag_id.go b/object/resolve/peel_to_tag_id.go index 8574aaa2..275ef561 100644 --- a/object/resolve/peel_to_tag_id.go +++ b/object/resolve/peel_to_tag_id.go @@ -1,6 +1,6 @@ package resolve -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // PeelToTagID returns id unchanged. func (r *Resolver) PeelToTagID(id objectid.ObjectID) (objectid.ObjectID, error) { diff --git a/object/resolve/peel_to_tag_reader.go b/object/resolve/peel_to_tag_reader.go index d34ff7ad..77279511 100644 --- a/object/resolve/peel_to_tag_reader.go +++ b/object/resolve/peel_to_tag_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToTagReader returns a reader for the content of the tag at id, diff --git a/object/resolve/peel_to_tree.go b/object/resolve/peel_to_tree.go index bb5d2422..e8d60b76 100644 --- a/object/resolve/peel_to_tree.go +++ b/object/resolve/peel_to_tree.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/stored" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToTree peels tags until it reaches a tree or commit. If it reaches a diff --git a/object/resolve/peel_to_tree_id.go b/object/resolve/peel_to_tree_id.go index 79730d4f..bacee65e 100644 --- a/object/resolve/peel_to_tree_id.go +++ b/object/resolve/peel_to_tree_id.go @@ -3,7 +3,7 @@ package resolve import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/resolve/peel_to_tree_reader.go b/object/resolve/peel_to_tree_reader.go index 1f867883..515224ed 100644 --- a/object/resolve/peel_to_tree_reader.go +++ b/object/resolve/peel_to_tree_reader.go @@ -3,7 +3,7 @@ package resolve import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // PeelToTreeReader returns a reader for the content of the peeled tree at id, diff --git a/object/resolve/treefs.go b/object/resolve/treefs.go index eda8c7fa..de5d588a 100644 --- a/object/resolve/treefs.go +++ b/object/resolve/treefs.go @@ -4,7 +4,7 @@ import ( "io/fs" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // TreeFS exposes one Git tree as an fs.FS. diff --git a/object/resolve/treefs_entry.go b/object/resolve/treefs_entry.go index af9760ca..b37ac0a0 100644 --- a/object/resolve/treefs_entry.go +++ b/object/resolve/treefs_entry.go @@ -6,7 +6,7 @@ import ( "io/fs" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func (treeFS *TreeFS) resolvePath(op treeFSOp, name string) (treeEntryValue, error) { diff --git a/object/resolve/treefs_new.go b/object/resolve/treefs_new.go index 9a48a02e..9f5fe77d 100644 --- a/object/resolve/treefs_new.go +++ b/object/resolve/treefs_new.go @@ -1,6 +1,6 @@ package resolve -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // TreeFS returns a new filesystem view rooted at root, which may be any // tree-ish object accepted by PeelToTreeID. diff --git a/object/resolve/treefs_test.go b/object/resolve/treefs_test.go index 64cd1778..c337a7cd 100644 --- a/object/resolve/treefs_test.go +++ b/object/resolve/treefs_test.go @@ -8,7 +8,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" "codeberg.org/lindenii/furgit/object/resolve" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/repository" ) diff --git a/object/stored/stored.go b/object/stored/stored.go index 3e0352d1..f48aaa77 100644 --- a/object/stored/stored.go +++ b/object/stored/stored.go @@ -7,7 +7,7 @@ package stored import ( "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Stored represents a stored object, diff --git a/object/tag.go b/object/tag.go index 6b2c7eb1..50c4b273 100644 --- a/object/tag.go +++ b/object/tag.go @@ -1,7 +1,7 @@ package object import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/tag_parse.go b/object/tag_parse.go index 3def4101..afc9a2e9 100644 --- a/object/tag_parse.go +++ b/object/tag_parse.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/tag_parse_test.go b/object/tag_parse_test.go index d360f3ef..07998f1c 100644 --- a/object/tag_parse_test.go +++ b/object/tag_parse_test.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/tag_serialize_test.go b/object/tag_serialize_test.go index e1bdbab2..de9f813d 100644 --- a/object/tag_serialize_test.go +++ b/object/tag_serialize_test.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestTagSerialize(t *testing.T) { diff --git a/object/tree.go b/object/tree.go index 2abd2914..83dcb508 100644 --- a/object/tree.go +++ b/object/tree.go @@ -5,7 +5,7 @@ import ( "fmt" "sort" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/object/tree_parse.go b/object/tree_parse.go index dd4faa8b..944dc538 100644 --- a/object/tree_parse.go +++ b/object/tree_parse.go @@ -5,7 +5,7 @@ import ( "fmt" "strconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // ParseTree decodes a tree object body. diff --git a/object/tree_parse_test.go b/object/tree_parse_test.go index 03a36a72..2e78243c 100644 --- a/object/tree_parse_test.go +++ b/object/tree_parse_test.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestTreeParseFromGit(t *testing.T) { diff --git a/object/tree_serialize_test.go b/object/tree_serialize_test.go index c038ad58..26f8768e 100644 --- a/object/tree_serialize_test.go +++ b/object/tree_serialize_test.go @@ -5,7 +5,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestTreeSerialize(t *testing.T) { diff --git a/objectid/algorithms.go b/objectid/algorithms.go deleted file mode 100644 index 404d3bbf..00000000 --- a/objectid/algorithms.go +++ /dev/null @@ -1,140 +0,0 @@ -package objectid - -import ( - "crypto/sha1" //#nosec gosec - "crypto/sha256" - "hash" -) - -// maxObjectIDSize MUST be >= the largest supported algorithm size. -const maxObjectIDSize = sha256.Size - -// Algorithm identifies the hash algorithm used for Git object IDs. -type Algorithm uint8 - -const ( - AlgorithmUnknown Algorithm = iota - AlgorithmSHA1 - AlgorithmSHA256 -) - -type algorithmDetails struct { - name string - size int - packHashID uint32 - sum func([]byte) ObjectID - new func() hash.Hash -} - -//nolint:gochecknoglobals -var algorithmTable = [...]algorithmDetails{ - AlgorithmUnknown: {}, - AlgorithmSHA1: { - name: "sha1", - size: sha1.Size, - packHashID: 1, - sum: func(data []byte) ObjectID { - sum := sha1.Sum(data) //#nosec G401 - - var id ObjectID - copy(id.data[:], sum[:]) - id.algo = AlgorithmSHA1 - - return id - }, - new: sha1.New, - }, - AlgorithmSHA256: { - name: "sha256", - size: sha256.Size, - packHashID: 2, - sum: func(data []byte) ObjectID { - sum := sha256.Sum256(data) - - var id ObjectID - copy(id.data[:], sum[:]) - id.algo = AlgorithmSHA256 - - return id - }, - new: sha256.New, - }, -} - -var ( - //nolint:gochecknoglobals - algorithmByName = map[string]Algorithm{} - //nolint:gochecknoglobals - supportedAlgorithms []Algorithm -) - -func init() { //nolint:gochecknoinits - for algo := Algorithm(0); int(algo) < len(algorithmTable); algo++ { - info := algorithmTable[algo] - if info.name == "" { - continue - } - - algorithmByName[info.name] = algo - supportedAlgorithms = append(supportedAlgorithms, algo) - } -} - -// SupportedAlgorithms returns all object ID algorithms supported by furgit. -// Do not mutate. -func SupportedAlgorithms() []Algorithm { - return supportedAlgorithms -} - -// ParseAlgorithm parses a canonical algorithm name (e.g. "sha1", "sha256"). -func ParseAlgorithm(s string) (Algorithm, bool) { - algo, ok := algorithmByName[s] - - return algo, ok -} - -// Size returns the hash size in bytes. -func (algo Algorithm) Size() int { - return algo.info().size -} - -// String returns the canonical algorithm name. -func (algo Algorithm) String() string { - inf := algo.info() - if inf.name == "" { - return "unknown" - } - - return inf.name -} - -// HexLen returns the encoded hexadecimal length. -func (algo Algorithm) HexLen() int { - return algo.Size() * 2 -} - -// PackHashID returns the Git pack/rev hash-id encoding for this algorithm. -// -// Unknown algorithms return 0. -func (algo Algorithm) PackHashID() uint32 { - return algo.info().packHashID -} - -// Sum computes an object ID from raw data using the selected algorithm. -func (algo Algorithm) Sum(data []byte) ObjectID { - return algo.info().sum(data) -} - -// New returns a new hash.Hash for this algorithm. -func (algo Algorithm) New() (hash.Hash, error) { - newFn := algo.info().new - if newFn == nil { - return nil, ErrInvalidAlgorithm - } - - return newFn(), nil -} - -func (algo Algorithm) info() algorithmDetails { - return algorithmTable[algo] -} diff --git a/objectid/errors.go b/objectid/errors.go deleted file mode 100644 index 8e604c44..00000000 --- a/objectid/errors.go +++ /dev/null @@ -1,10 +0,0 @@ -package objectid - -import "errors" - -var ( - // ErrInvalidAlgorithm indicates an unsupported object ID algorithm. - ErrInvalidAlgorithm = errors.New("objectid: invalid algorithm") - // ErrInvalidObjectID indicates malformed object ID data. - ErrInvalidObjectID = errors.New("objectid: invalid object id") -) diff --git a/objectid/objectid.go b/objectid/objectid.go deleted file mode 100644 index 8eb82969..00000000 --- a/objectid/objectid.go +++ /dev/null @@ -1,113 +0,0 @@ -// Package objectid provides utilities around object IDs and hash algorithms. -package objectid - -import ( - //#nosec G505 - - "bytes" - "encoding/hex" - "fmt" -) - -// ObjectID represents a Git object ID. -// -//nolint:recvcheck -type ObjectID struct { - algo Algorithm - data [maxObjectIDSize]byte -} - -// Algorithm returns the object ID's hash algorithm. -func (id ObjectID) Algorithm() Algorithm { - return id.algo -} - -// Size returns the object ID size in bytes. -func (id ObjectID) Size() int { - return id.algo.Size() -} - -// String returns the canonical hex representation. -func (id ObjectID) String() string { - size := id.Size() - - return hex.EncodeToString(id.data[:size]) -} - -// Bytes returns a copy of the object ID bytes. -func (id ObjectID) Bytes() []byte { - size := id.Size() - - return append([]byte(nil), id.data[:size]...) -} - -// RawBytes returns a direct byte slice view of the object ID bytes. -// -// The returned slice aliases the object ID's internal storage. Callers MUST -// treat it as read-only and MUST NOT modify its contents. -// -// Use Bytes when an independent copy is required. -func (id *ObjectID) RawBytes() []byte { - size := id.Size() - - return id.data[:size:size] -} - -// Compare lexicographically compares two object IDs by their canonical byte -// representation. -func Compare(left, right ObjectID) int { - return bytes.Compare(left.RawBytes(), right.RawBytes()) -} - -// Zero returns the all-zero object ID for the specified algorithm. -func Zero(algo Algorithm) ObjectID { - id, err := FromBytes(algo, make([]byte, algo.Size())) - if err != nil { - panic(err) - } - - return id -} - -// ParseHex parses an object ID from hex for the specified algorithm. -func ParseHex(algo Algorithm, s string) (ObjectID, error) { - var id ObjectID - if algo.Size() == 0 { - return id, ErrInvalidAlgorithm - } - - if len(s)%2 != 0 { - return id, fmt.Errorf("%w: odd hex length %d", ErrInvalidObjectID, len(s)) - } - - if len(s) != algo.HexLen() { - return id, fmt.Errorf("%w: got %d chars, expected %d", ErrInvalidObjectID, len(s), algo.HexLen()) - } - - decoded, err := hex.DecodeString(s) - if err != nil { - return id, fmt.Errorf("%w: decode: %w", ErrInvalidObjectID, err) - } - - copy(id.data[:], decoded) - id.algo = algo - - return id, nil -} - -// FromBytes builds an object ID from raw bytes for the specified algorithm. -func FromBytes(algo Algorithm, b []byte) (ObjectID, error) { - var id ObjectID - if algo.Size() == 0 { - return id, ErrInvalidAlgorithm - } - - if len(b) != algo.Size() { - return id, fmt.Errorf("%w: got %d bytes, expected %d", ErrInvalidObjectID, len(b), algo.Size()) - } - - copy(id.data[:], b) - id.algo = algo - - return id, nil -} diff --git a/objectid/objectid_test.go b/objectid/objectid_test.go deleted file mode 100644 index d053aca3..00000000 --- a/objectid/objectid_test.go +++ /dev/null @@ -1,184 +0,0 @@ -package objectid_test - -import ( - "bytes" - "strings" - "testing" - - "codeberg.org/lindenii/furgit/objectid" -) - -func TestParseAlgorithm(t *testing.T) { - t.Parallel() - - algo, ok := objectid.ParseAlgorithm("sha1") - if !ok || algo != objectid.AlgorithmSHA1 { - t.Fatalf("ParseAlgorithm(sha1) = (%v,%v)", algo, ok) - } - - algo, ok = objectid.ParseAlgorithm("sha256") - if !ok || algo != objectid.AlgorithmSHA256 { - t.Fatalf("ParseAlgorithm(sha256) = (%v,%v)", algo, ok) - } - - if _, ok := objectid.ParseAlgorithm("md5"); ok { - t.Fatalf("ParseAlgorithm(md5) should fail") - } -} - -func TestParseHexRoundtrip(t *testing.T) { - t.Parallel() - - for _, algo := range objectid.SupportedAlgorithms() { - t.Run(algo.String(), func(t *testing.T) { - t.Parallel() - - hex := strings.Repeat("01", algo.Size()) - - id, err := objectid.ParseHex(algo, hex) - if err != nil { - t.Fatalf("ParseHex failed: %v", err) - } - - if got := id.String(); got != hex { - t.Fatalf("String() = %q, want %q", got, hex) - } - - if got := id.Size(); got != algo.Size() { - t.Fatalf("Size() = %d, want %d", got, algo.Size()) - } - - raw := id.Bytes() - if len(raw) != algo.Size() { - t.Fatalf("Bytes len = %d, want %d", len(raw), algo.Size()) - } - - id2, err := objectid.FromBytes(algo, raw) - if err != nil { - t.Fatalf("FromBytes failed: %v", err) - } - - if id2.String() != hex { - t.Fatalf("FromBytes roundtrip = %q, want %q", id2.String(), hex) - } - }) - } -} - -func TestParseHexErrors(t *testing.T) { - t.Parallel() - - t.Run("unknown algo", func(t *testing.T) { - t.Parallel() - - _, err := objectid.ParseHex(objectid.AlgorithmUnknown, "00") - if err == nil { - t.Fatalf("expected ParseHex error") - } - }) - - for _, algo := range objectid.SupportedAlgorithms() { - t.Run(algo.String(), func(t *testing.T) { - t.Parallel() - - _, err := objectid.ParseHex(algo, strings.Repeat("0", algo.HexLen()-1)) - if err == nil { - t.Fatalf("expected ParseHex odd-len error") - } - - _, err = objectid.ParseHex(algo, strings.Repeat("0", algo.HexLen()-2)) - if err == nil { - t.Fatalf("expected ParseHex wrong-len error") - } - - _, err = objectid.ParseHex(algo, "z"+strings.Repeat("0", algo.HexLen()-1)) - if err == nil { - t.Fatalf("expected ParseHex invalid-hex error") - } - }) - } -} - -func TestFromBytesErrors(t *testing.T) { - t.Parallel() - - _, err := objectid.FromBytes(objectid.AlgorithmUnknown, []byte{1, 2}) - if err == nil { - t.Fatalf("expected FromBytes unknown algo error") - } - - for _, algo := range objectid.SupportedAlgorithms() { - _, err = objectid.FromBytes(algo, []byte{1, 2}) - if err == nil { - t.Fatalf("expected FromBytes wrong size error") - } - } -} - -func TestBytesReturnsCopy(t *testing.T) { - t.Parallel() - - for _, algo := range objectid.SupportedAlgorithms() { - id, err := objectid.ParseHex(algo, strings.Repeat("01", algo.Size())) - if err != nil { - t.Fatalf("ParseHex failed: %v", err) - } - - b1 := id.Bytes() - - b2 := id.Bytes() - if !bytes.Equal(b1, b2) { - t.Fatalf("Bytes mismatch") - } - - b1[0] ^= 0xff - if bytes.Equal(b1, b2) { - t.Fatalf("Bytes should return independent copies") - } - } -} - -func TestRawBytesAliasesStorage(t *testing.T) { - t.Parallel() - - for _, algo := range objectid.SupportedAlgorithms() { - id, err := objectid.ParseHex(algo, strings.Repeat("01", algo.Size())) - if err != nil { - t.Fatalf("ParseHex failed: %v", err) - } - - b := id.RawBytes() - if len(b) != id.Size() { - t.Fatalf("RawBytes len = %d, want %d", len(b), id.Size()) - } - - if cap(b) != len(b) { - t.Fatalf("RawBytes cap = %d, want %d", cap(b), len(b)) - } - - orig := id.String() - b[0] ^= 0xff - - if id.String() == orig { - t.Fatalf("RawBytes should alias object ID storage") - } - } -} - -func TestAlgorithmSum(t *testing.T) { - t.Parallel() - - id1 := objectid.AlgorithmSHA1.Sum([]byte("hello")) - if id1.Algorithm() != objectid.AlgorithmSHA1 || id1.Size() != objectid.AlgorithmSHA1.Size() { - t.Fatalf("sha1 sum produced invalid object id") - } - - id2 := objectid.AlgorithmSHA256.Sum([]byte("hello")) - if id2.Algorithm() != objectid.AlgorithmSHA256 || id2.Size() != objectid.AlgorithmSHA256.Size() { - t.Fatalf("sha256 sum produced invalid object id") - } - - if id1.String() == id2.String() { - t.Fatalf("sha1 and sha256 should differ") - } -} diff --git a/objectstore/chain/bytes.go b/objectstore/chain/bytes.go index f5e5ac6d..83d8957b 100644 --- a/objectstore/chain/bytes.go +++ b/objectstore/chain/bytes.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/chain/header.go b/objectstore/chain/header.go index 6937d6f3..44a365a5 100644 --- a/objectstore/chain/header.go +++ b/objectstore/chain/header.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/chain/reader.go b/objectstore/chain/reader.go index 2a19c6fb..d68f9965 100644 --- a/objectstore/chain/reader.go +++ b/objectstore/chain/reader.go @@ -5,7 +5,7 @@ import ( "fmt" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/chain/size.go b/objectstore/chain/size.go index 9815317f..34f6234c 100644 --- a/objectstore/chain/size.go +++ b/objectstore/chain/size.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/objectstore/loose/helpers_test.go b/objectstore/loose/helpers_test.go index 46e6d453..f46147d2 100644 --- a/objectstore/loose/helpers_test.go +++ b/objectstore/loose/helpers_test.go @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/loose" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/paths.go b/objectstore/loose/paths.go index e8020d72..ca15aa62 100644 --- a/objectstore/loose/paths.go +++ b/objectstore/loose/paths.go @@ -7,7 +7,7 @@ import ( "os" "path/filepath" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/objectstore/loose/read_bytes.go b/objectstore/loose/read_bytes.go index bff22e48..0b6da81b 100644 --- a/objectstore/loose/read_bytes.go +++ b/objectstore/loose/read_bytes.go @@ -1,7 +1,7 @@ package loose import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/read_header.go b/objectstore/loose/read_header.go index 3d3d6b87..37bf40de 100644 --- a/objectstore/loose/read_header.go +++ b/objectstore/loose/read_header.go @@ -4,7 +4,7 @@ import ( "bufio" "codeberg.org/lindenii/furgit/internal/compress/zlib" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/read_reader.go b/objectstore/loose/read_reader.go index c0a64fe7..29b71627 100644 --- a/objectstore/loose/read_reader.go +++ b/objectstore/loose/read_reader.go @@ -9,7 +9,7 @@ import ( "codeberg.org/lindenii/furgit/internal/compress/zlib" "codeberg.org/lindenii/furgit/internal/iolimit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/read_size.go b/objectstore/loose/read_size.go index 289950d1..2ececc49 100644 --- a/objectstore/loose/read_size.go +++ b/objectstore/loose/read_size.go @@ -1,6 +1,6 @@ package loose -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // ReadSize reads an object's declared content length. // diff --git a/objectstore/loose/read_test.go b/objectstore/loose/read_test.go index c1180f44..68b2d75b 100644 --- a/objectstore/loose/read_test.go +++ b/objectstore/loose/read_test.go @@ -8,7 +8,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/objectstore/loose" objecttype "codeberg.org/lindenii/furgit/object/type" diff --git a/objectstore/loose/store.go b/objectstore/loose/store.go index 5cb83968..d8eba84e 100644 --- a/objectstore/loose/store.go +++ b/objectstore/loose/store.go @@ -4,7 +4,7 @@ package loose import ( "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Store reads loose Git objects from an objects directory root. diff --git a/objectstore/loose/write_bytes.go b/objectstore/loose/write_bytes.go index 4853ffb1..ffc65117 100644 --- a/objectstore/loose/write_bytes.go +++ b/objectstore/loose/write_bytes.go @@ -3,7 +3,7 @@ package loose import ( "bytes" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/write_reader.go b/objectstore/loose/write_reader.go index f1a7d801..f686f279 100644 --- a/objectstore/loose/write_reader.go +++ b/objectstore/loose/write_reader.go @@ -5,7 +5,7 @@ import ( "io" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/write_test.go b/objectstore/loose/write_test.go index 90cedbd6..30d8dbdb 100644 --- a/objectstore/loose/write_test.go +++ b/objectstore/loose/write_test.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/loose/write_writer_finalize.go b/objectstore/loose/write_writer_finalize.go index 5b7a6754..f8dee54d 100644 --- a/objectstore/loose/write_writer_finalize.go +++ b/objectstore/loose/write_writer_finalize.go @@ -5,7 +5,7 @@ import ( "io/fs" "path/filepath" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Close flushes and closes the underlying zlib stream and temp file. diff --git a/objectstore/memory/add.go b/objectstore/memory/add.go index 12781d7d..3b27f52d 100644 --- a/objectstore/memory/add.go +++ b/objectstore/memory/add.go @@ -2,7 +2,7 @@ package memory import ( objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/memory/algorithm.go b/objectstore/memory/algorithm.go index db43272e..bf7f3a82 100644 --- a/objectstore/memory/algorithm.go +++ b/objectstore/memory/algorithm.go @@ -1,6 +1,6 @@ package memory -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Algorithm returns the object ID algorithm used by the store. func (store *Store) Algorithm() objectid.Algorithm { diff --git a/objectstore/memory/read_bytes.go b/objectstore/memory/read_bytes.go index 15680a74..5ce7dc9e 100644 --- a/objectstore/memory/read_bytes.go +++ b/objectstore/memory/read_bytes.go @@ -2,7 +2,7 @@ package memory import ( objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/memory/read_header.go b/objectstore/memory/read_header.go index 07019654..cd987cfe 100644 --- a/objectstore/memory/read_header.go +++ b/objectstore/memory/read_header.go @@ -1,7 +1,7 @@ package memory import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/memory/read_reader.go b/objectstore/memory/read_reader.go index ad59246e..425c3034 100644 --- a/objectstore/memory/read_reader.go +++ b/objectstore/memory/read_reader.go @@ -4,7 +4,7 @@ import ( "bytes" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/memory/read_size.go b/objectstore/memory/read_size.go index 3ca7789a..7045bd61 100644 --- a/objectstore/memory/read_size.go +++ b/objectstore/memory/read_size.go @@ -1,6 +1,6 @@ package memory -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // ReadSize reads one object size. func (store *Store) ReadSize(id objectid.ObjectID) (int64, error) { diff --git a/objectstore/memory/store.go b/objectstore/memory/store.go index f7513094..8f212c38 100644 --- a/objectstore/memory/store.go +++ b/objectstore/memory/store.go @@ -1,7 +1,7 @@ package memory import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Store is one in-memory object store. diff --git a/objectstore/mix/bytes.go b/objectstore/mix/bytes.go index d312eecd..e81fa88c 100644 --- a/objectstore/mix/bytes.go +++ b/objectstore/mix/bytes.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/mix/header.go b/objectstore/mix/header.go index d86c6733..05d93353 100644 --- a/objectstore/mix/header.go +++ b/objectstore/mix/header.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/mix/reader.go b/objectstore/mix/reader.go index b9227bb5..6d099c6b 100644 --- a/objectstore/mix/reader.go +++ b/objectstore/mix/reader.go @@ -5,7 +5,7 @@ import ( "fmt" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/mix/size.go b/objectstore/mix/size.go index 7a45123c..76f39fa7 100644 --- a/objectstore/mix/size.go +++ b/objectstore/mix/size.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/objectstore/objectstore.go b/objectstore/objectstore.go index 056669dc..d43dbccd 100644 --- a/objectstore/objectstore.go +++ b/objectstore/objectstore.go @@ -5,7 +5,7 @@ import ( "errors" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/packed/entry_parse.go b/objectstore/packed/entry_parse.go index 93451ee0..be8f3c4c 100644 --- a/objectstore/packed/entry_parse.go +++ b/objectstore/packed/entry_parse.go @@ -4,7 +4,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" packfmt "codeberg.org/lindenii/furgit/packfile" ) diff --git a/objectstore/packed/helpers_test.go b/objectstore/packed/helpers_test.go index 72c68d01..9d85e095 100644 --- a/objectstore/packed/helpers_test.go +++ b/objectstore/packed/helpers_test.go @@ -9,7 +9,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/packed" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/packed/idx.go b/objectstore/packed/idx.go index db6a0136..5024f2f3 100644 --- a/objectstore/packed/idx.go +++ b/objectstore/packed/idx.go @@ -3,7 +3,7 @@ package packed import ( "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // idxFile stores one mapped and validated idx v2 file. diff --git a/objectstore/packed/idx_lookup.go b/objectstore/packed/idx_lookup.go index a97c5e79..0bd11d1b 100644 --- a/objectstore/packed/idx_lookup.go +++ b/objectstore/packed/idx_lookup.go @@ -5,7 +5,7 @@ import ( "encoding/binary" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // lookup resolves one object ID to its pack offset within this index. diff --git a/objectstore/packed/idx_open.go b/objectstore/packed/idx_open.go index 9eb92682..fabd0c00 100644 --- a/objectstore/packed/idx_open.go +++ b/objectstore/packed/idx_open.go @@ -6,7 +6,7 @@ import ( "syscall" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // openIndex returns one opened and parsed index, caching it by pack basename. diff --git a/objectstore/packed/new.go b/objectstore/packed/new.go index c8e7338e..a4d1752d 100644 --- a/objectstore/packed/new.go +++ b/objectstore/packed/new.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // New creates a packed-object store rooted at an objects/pack directory. diff --git a/objectstore/packed/pack_idx_checksum.go b/objectstore/packed/pack_idx_checksum.go index 25556088..28d4c3db 100644 --- a/objectstore/packed/pack_idx_checksum.go +++ b/objectstore/packed/pack_idx_checksum.go @@ -4,7 +4,7 @@ import ( "bytes" "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // verifyMappedPackMatchesMappedIdx compares one mapped pack trailer hash with diff --git a/objectstore/packed/read_bytes.go b/objectstore/packed/read_bytes.go index 03ee3dae..333cfaae 100644 --- a/objectstore/packed/read_bytes.go +++ b/objectstore/packed/read_bytes.go @@ -4,7 +4,7 @@ import ( "fmt" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/packed/read_header.go b/objectstore/packed/read_header.go index b0a84f23..d774de7c 100644 --- a/objectstore/packed/read_header.go +++ b/objectstore/packed/read_header.go @@ -1,7 +1,7 @@ package packed import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/objectstore/packed/read_reader.go b/objectstore/packed/read_reader.go index 8d990433..5f4fa604 100644 --- a/objectstore/packed/read_reader.go +++ b/objectstore/packed/read_reader.go @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/internal/iolimit" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" packfmt "codeberg.org/lindenii/furgit/packfile" ) diff --git a/objectstore/packed/read_size.go b/objectstore/packed/read_size.go index 334d3ebf..3036abcd 100644 --- a/objectstore/packed/read_size.go +++ b/objectstore/packed/read_size.go @@ -3,7 +3,7 @@ package packed import ( "fmt" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" packfmt "codeberg.org/lindenii/furgit/packfile" ) diff --git a/objectstore/packed/read_test.go b/objectstore/packed/read_test.go index 2f6b4979..f672f233 100644 --- a/objectstore/packed/read_test.go +++ b/objectstore/packed/read_test.go @@ -10,7 +10,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/objectstore/packed" ) diff --git a/objectstore/packed/store.go b/objectstore/packed/store.go index fc3f57d4..41a4614b 100644 --- a/objectstore/packed/store.go +++ b/objectstore/packed/store.go @@ -6,7 +6,7 @@ import ( "sync" "sync/atomic" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/objectstore/packed/store_lookup.go b/objectstore/packed/store_lookup.go index 4a6bfc9f..78a54c07 100644 --- a/objectstore/packed/store_lookup.go +++ b/objectstore/packed/store_lookup.go @@ -3,7 +3,7 @@ package packed import ( "errors" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/packfile/ingest/api.go b/packfile/ingest/api.go index 6d4437e0..b2f3c92f 100644 --- a/packfile/ingest/api.go +++ b/packfile/ingest/api.go @@ -7,7 +7,7 @@ import ( "io" "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" ) diff --git a/packfile/ingest/drain.go b/packfile/ingest/drain.go index d37c714e..48fb91d9 100644 --- a/packfile/ingest/drain.go +++ b/packfile/ingest/drain.go @@ -6,7 +6,7 @@ import ( "codeberg.org/lindenii/furgit/internal/compress/zlib" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" packfmt "codeberg.org/lindenii/furgit/packfile" ) diff --git a/packfile/ingest/entry_prefix.go b/packfile/ingest/entry_prefix.go index f2da8c9c..a107b4e8 100644 --- a/packfile/ingest/entry_prefix.go +++ b/packfile/ingest/entry_prefix.go @@ -4,7 +4,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/packfile/ingest/hash.go b/packfile/ingest/hash.go index bb8fd2b4..4b739c20 100644 --- a/packfile/ingest/hash.go +++ b/packfile/ingest/hash.go @@ -4,7 +4,7 @@ import ( "fmt" objectheader "codeberg.org/lindenii/furgit/object/header" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/packfile/ingest/ingest_test.go b/packfile/ingest/ingest_test.go index 4e0cd3ec..3eb821d3 100644 --- a/packfile/ingest/ingest_test.go +++ b/packfile/ingest/ingest_test.go @@ -12,7 +12,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/packfile/ingest" ) diff --git a/packfile/ingest/records.go b/packfile/ingest/records.go index 27150af6..75f157fa 100644 --- a/packfile/ingest/records.go +++ b/packfile/ingest/records.go @@ -1,7 +1,7 @@ package ingest import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/packfile/ingest/rewrite_header_trailer.go b/packfile/ingest/rewrite_header_trailer.go index c5f858de..f1f18a39 100644 --- a/packfile/ingest/rewrite_header_trailer.go +++ b/packfile/ingest/rewrite_header_trailer.go @@ -5,7 +5,7 @@ import ( "io" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // rewritePackHeaderAndTrailer rewrites object count and trailer hash using ReadAt/WriteAt. diff --git a/packfile/ingest/scan.go b/packfile/ingest/scan.go index 41916cdf..de4e993c 100644 --- a/packfile/ingest/scan.go +++ b/packfile/ingest/scan.go @@ -4,7 +4,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/internal/progress" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // streamPackAndScan copies src into temp .pack while scanning packed entries. diff --git a/packfile/ingest/state.go b/packfile/ingest/state.go index d44b6e09..797323b2 100644 --- a/packfile/ingest/state.go +++ b/packfile/ingest/state.go @@ -4,7 +4,7 @@ import ( "io" "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) const ( diff --git a/packfile/ingest/thin_append.go b/packfile/ingest/thin_append.go index c0883d81..779d477f 100644 --- a/packfile/ingest/thin_append.go +++ b/packfile/ingest/thin_append.go @@ -6,7 +6,7 @@ import ( "io" "codeberg.org/lindenii/furgit/internal/intconv" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/packfile/ingest/thin_unresolved.go b/packfile/ingest/thin_unresolved.go index 72433878..757cc0e2 100644 --- a/packfile/ingest/thin_unresolved.go +++ b/packfile/ingest/thin_unresolved.go @@ -4,7 +4,7 @@ import ( "bytes" "slices" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/protocol/v0v1/server/advertise.go b/protocol/v0v1/server/advertise.go index dd77a12d..be1b1f02 100644 --- a/protocol/v0v1/server/advertise.go +++ b/protocol/v0v1/server/advertise.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // AdvertiseRefs writes one server ref advertisement. diff --git a/protocol/v0v1/server/advertise_test.go b/protocol/v0v1/server/advertise_test.go index 91526617..287bb61d 100644 --- a/protocol/v0v1/server/advertise_test.go +++ b/protocol/v0v1/server/advertise_test.go @@ -5,7 +5,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" server "codeberg.org/lindenii/furgit/protocol/v0v1/server" ) diff --git a/protocol/v0v1/server/advertised_ref.go b/protocol/v0v1/server/advertised_ref.go index a203eb7a..cf6ddcc8 100644 --- a/protocol/v0v1/server/advertised_ref.go +++ b/protocol/v0v1/server/advertised_ref.go @@ -1,6 +1,6 @@ package server -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // AdvertisedRef is one ref entry in one v0/v1 server advertisement. type AdvertisedRef struct { diff --git a/protocol/v0v1/server/helpers_test.go b/protocol/v0v1/server/helpers_test.go index ff2a69f3..261bbdc5 100644 --- a/protocol/v0v1/server/helpers_test.go +++ b/protocol/v0v1/server/helpers_test.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) type bufferWriteFlusher struct { diff --git a/protocol/v0v1/server/receivepack/capabilities.go b/protocol/v0v1/server/receivepack/capabilities.go index 68ec79ca..e0ff51a3 100644 --- a/protocol/v0v1/server/receivepack/capabilities.go +++ b/protocol/v0v1/server/receivepack/capabilities.go @@ -5,7 +5,7 @@ import ( "slices" "strings" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Capabilities describes one receive-pack capability set. diff --git a/protocol/v0v1/server/receivepack/helpers_test.go b/protocol/v0v1/server/receivepack/helpers_test.go index 08d281e7..5db8e6a6 100644 --- a/protocol/v0v1/server/receivepack/helpers_test.go +++ b/protocol/v0v1/server/receivepack/helpers_test.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) type bufferWriteFlusher struct { diff --git a/protocol/v0v1/server/receivepack/parse_test.go b/protocol/v0v1/server/receivepack/parse_test.go index d0fcfab6..534edcb2 100644 --- a/protocol/v0v1/server/receivepack/parse_test.go +++ b/protocol/v0v1/server/receivepack/parse_test.go @@ -6,7 +6,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/protocol/pktline" common "codeberg.org/lindenii/furgit/protocol/v0v1/server" receivepack "codeberg.org/lindenii/furgit/protocol/v0v1/server/receivepack" diff --git a/protocol/v0v1/server/receivepack/report_status_test.go b/protocol/v0v1/server/receivepack/report_status_test.go index 383bc92e..0f22612b 100644 --- a/protocol/v0v1/server/receivepack/report_status_test.go +++ b/protocol/v0v1/server/receivepack/report_status_test.go @@ -7,7 +7,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/protocol/pktline" "codeberg.org/lindenii/furgit/protocol/sideband64k" common "codeberg.org/lindenii/furgit/protocol/v0v1/server" diff --git a/protocol/v0v1/server/receivepack/session.go b/protocol/v0v1/server/receivepack/session.go index 94fc87eb..1ea4ab35 100644 --- a/protocol/v0v1/server/receivepack/session.go +++ b/protocol/v0v1/server/receivepack/session.go @@ -5,7 +5,7 @@ import ( "io" "strings" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" common "codeberg.org/lindenii/furgit/protocol/v0v1/server" ) diff --git a/protocol/v0v1/server/receivepack/types.go b/protocol/v0v1/server/receivepack/types.go index 521427cd..b281a86b 100644 --- a/protocol/v0v1/server/receivepack/types.go +++ b/protocol/v0v1/server/receivepack/types.go @@ -1,6 +1,6 @@ package receivepack -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Command is one requested reference update. type Command struct { diff --git a/protocol/v0v1/server/session.go b/protocol/v0v1/server/session.go index 14f8a5de..81939540 100644 --- a/protocol/v0v1/server/session.go +++ b/protocol/v0v1/server/session.go @@ -3,7 +3,7 @@ package server import ( "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/protocol/pktline" "codeberg.org/lindenii/furgit/protocol/sideband64k" ) diff --git a/reachability/connected.go b/reachability/connected.go index 6496287d..96211079 100644 --- a/reachability/connected.go +++ b/reachability/connected.go @@ -1,6 +1,6 @@ package reachability -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // CheckConnected verifies that all objects reachable from wants (under the // selected domain) can be fully traversed without missing-object/type/parse diff --git a/reachability/helpers.go b/reachability/helpers.go index ee69b0e7..e7f4a5a3 100644 --- a/reachability/helpers.go +++ b/reachability/helpers.go @@ -5,7 +5,7 @@ import ( "fmt" giterrors "codeberg.org/lindenii/furgit/errors" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/reachability/integration_test.go b/reachability/integration_test.go index feda699b..4c57d14f 100644 --- a/reachability/integration_test.go +++ b/reachability/integration_test.go @@ -11,7 +11,7 @@ import ( giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/reachability" ) diff --git a/reachability/unit_test.go b/reachability/unit_test.go index 640dad12..249b870c 100644 --- a/reachability/unit_test.go +++ b/reachability/unit_test.go @@ -10,7 +10,7 @@ import ( giterrors "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/memory" objecttype "codeberg.org/lindenii/furgit/object/type" "codeberg.org/lindenii/furgit/reachability" diff --git a/reachability/walk.go b/reachability/walk.go index dc2f32fd..c89d29e9 100644 --- a/reachability/walk.go +++ b/reachability/walk.go @@ -1,7 +1,7 @@ package reachability import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Walk is one single-use iterator traversal. diff --git a/reachability/walk_expand_commits_graph.go b/reachability/walk_expand_commits_graph.go index e31f8652..447879d8 100644 --- a/reachability/walk_expand_commits_graph.go +++ b/reachability/walk_expand_commits_graph.go @@ -4,7 +4,7 @@ import ( "errors" commitgraphread "codeberg.org/lindenii/furgit/commitgraph/read" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/reachability/walk_item.go b/reachability/walk_item.go index 7b272e94..da30e127 100644 --- a/reachability/walk_item.go +++ b/reachability/walk_item.go @@ -1,7 +1,7 @@ package reachability import ( - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/reachability/walk_seq.go b/reachability/walk_seq.go index ad3415d1..089edc39 100644 --- a/reachability/walk_seq.go +++ b/reachability/walk_seq.go @@ -4,7 +4,7 @@ import ( "errors" "iter" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // Seq returns the traversal sequence. It is single-use. diff --git a/reachability/walk_verify.go b/reachability/walk_verify.go index a14ca267..0469a8e2 100644 --- a/reachability/walk_verify.go +++ b/reachability/walk_verify.go @@ -3,7 +3,7 @@ package reachability import ( "codeberg.org/lindenii/furgit/errors" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) diff --git a/receivepack/hook.go b/receivepack/hook.go index fcf2cd37..27fc605c 100644 --- a/receivepack/hook.go +++ b/receivepack/hook.go @@ -4,7 +4,7 @@ import ( "context" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/receivepack/service" "codeberg.org/lindenii/furgit/refstore" diff --git a/receivepack/hooks/reject_force_push.go b/receivepack/hooks/reject_force_push.go index 9902c9be..8a72b273 100644 --- a/receivepack/hooks/reject_force_push.go +++ b/receivepack/hooks/reject_force_push.go @@ -6,7 +6,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/commitquery" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objectmix "codeberg.org/lindenii/furgit/objectstore/mix" receivepack "codeberg.org/lindenii/furgit/receivepack" "codeberg.org/lindenii/furgit/refstore" diff --git a/receivepack/int_test.go b/receivepack/int_test.go index 8aba0713..ff19822b 100644 --- a/receivepack/int_test.go +++ b/receivepack/int_test.go @@ -10,7 +10,7 @@ import ( "time" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/protocol/pktline" "codeberg.org/lindenii/furgit/protocol/sideband64k" receivepack "codeberg.org/lindenii/furgit/receivepack" diff --git a/receivepack/options.go b/receivepack/options.go index 860f29c1..e61e73c0 100644 --- a/receivepack/options.go +++ b/receivepack/options.go @@ -3,7 +3,7 @@ package receivepack import ( "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/receivepack/service/apply.go b/receivepack/service/apply.go index cfd59165..137af64a 100644 --- a/receivepack/service/apply.go +++ b/receivepack/service/apply.go @@ -2,7 +2,7 @@ package service import ( "codeberg.org/lindenii/furgit/internal/utils" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/receivepack/service/command.go b/receivepack/service/command.go index 33342e41..0fd8961e 100644 --- a/receivepack/service/command.go +++ b/receivepack/service/command.go @@ -1,6 +1,6 @@ package service -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Command is one protocol-independent requested ref update. type Command struct { diff --git a/receivepack/service/command_result.go b/receivepack/service/command_result.go index 18e39acc..37549f08 100644 --- a/receivepack/service/command_result.go +++ b/receivepack/service/command_result.go @@ -1,6 +1,6 @@ package service -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // CommandResult is one per-command execution result. type CommandResult struct { diff --git a/receivepack/service/hook.go b/receivepack/service/hook.go index b80d52d6..c80363fc 100644 --- a/receivepack/service/hook.go +++ b/receivepack/service/hook.go @@ -4,7 +4,7 @@ import ( "context" "io" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/receivepack/service/options.go b/receivepack/service/options.go index a49b6b95..dc99d3f0 100644 --- a/receivepack/service/options.go +++ b/receivepack/service/options.go @@ -5,7 +5,7 @@ import ( "io/fs" "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/receivepack/service/quarantine_test.go b/receivepack/service/quarantine_test.go index 0bab3728..5e802d12 100644 --- a/receivepack/service/quarantine_test.go +++ b/receivepack/service/quarantine_test.go @@ -7,7 +7,7 @@ import ( "path" "testing" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/memory" ) diff --git a/receivepack/service/service_test.go b/receivepack/service/service_test.go index bee8d1aa..a835a6f2 100644 --- a/receivepack/service/service_test.go +++ b/receivepack/service/service_test.go @@ -8,7 +8,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore/memory" "codeberg.org/lindenii/furgit/receivepack/service" ) diff --git a/receivepack/service/update.go b/receivepack/service/update.go index c73b73a5..043f3d51 100644 --- a/receivepack/service/update.go +++ b/receivepack/service/update.go @@ -1,6 +1,6 @@ package service -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // PlannedUpdate is one ref update that would be applied once ref writing // exists. diff --git a/ref/detached.go b/ref/detached.go index de709d81..e9b30906 100644 --- a/ref/detached.go +++ b/ref/detached.go @@ -1,6 +1,6 @@ package ref -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Detached points directly to an object ID. type Detached struct { diff --git a/refstore/batch.go b/refstore/batch.go index 7e3095ea..6a877a2c 100644 --- a/refstore/batch.go +++ b/refstore/batch.go @@ -1,6 +1,6 @@ package refstore -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Batch stages reference operations for one non-atomic apply. // diff --git a/refstore/files/batch_queue_ops.go b/refstore/files/batch_queue_ops.go index b74157c1..7434b0c3 100644 --- a/refstore/files/batch_queue_ops.go +++ b/refstore/files/batch_queue_ops.go @@ -1,6 +1,6 @@ package files -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" func (batch *Batch) Create(name string, newID objectid.ObjectID) { batch.queue(queuedUpdate{name: name, kind: updateCreate, newID: newID}) diff --git a/refstore/files/batch_test.go b/refstore/files/batch_test.go index d9ce9ac9..d44ef22f 100644 --- a/refstore/files/batch_test.go +++ b/refstore/files/batch_test.go @@ -5,7 +5,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/helpers_test.go b/refstore/files/helpers_test.go index bdef6bb5..12f02694 100644 --- a/refstore/files/helpers_test.go +++ b/refstore/files/helpers_test.go @@ -8,7 +8,7 @@ import ( "time" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore/files" ) diff --git a/refstore/files/new.go b/refstore/files/new.go index 6e113e64..bca3a491 100644 --- a/refstore/files/new.go +++ b/refstore/files/new.go @@ -5,7 +5,7 @@ import ( "os" "time" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) // New creates one files ref store rooted at one repository gitdir. diff --git a/refstore/files/packed_delete_test.go b/refstore/files/packed_delete_test.go index d8209f5b..75992a9d 100644 --- a/refstore/files/packed_delete_test.go +++ b/refstore/files/packed_delete_test.go @@ -9,7 +9,7 @@ import ( "time" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/packed_parse.go b/refstore/files/packed_parse.go index 5582ee37..3662f6ed 100644 --- a/refstore/files/packed_parse.go +++ b/refstore/files/packed_parse.go @@ -6,7 +6,7 @@ import ( "io" "strings" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/ref" ) diff --git a/refstore/files/read_loose.go b/refstore/files/read_loose.go index cc2bed49..8c743fb4 100644 --- a/refstore/files/read_loose.go +++ b/refstore/files/read_loose.go @@ -6,7 +6,7 @@ import ( "os" "strings" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/ref" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/resolve_list_test.go b/refstore/files/resolve_list_test.go index 82d1cc48..e25a53f4 100644 --- a/refstore/files/resolve_list_test.go +++ b/refstore/files/resolve_list_test.go @@ -5,7 +5,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/ref" ) diff --git a/refstore/files/store.go b/refstore/files/store.go index 378c0af0..ed9b8744 100644 --- a/refstore/files/store.go +++ b/refstore/files/store.go @@ -7,7 +7,7 @@ import ( "os" "time" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/transaction_dirs_test.go b/refstore/files/transaction_dirs_test.go index 08d07197..c010ae69 100644 --- a/refstore/files/transaction_dirs_test.go +++ b/refstore/files/transaction_dirs_test.go @@ -4,7 +4,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestFilesTransactionEmptyDirectoriesDoNotBlock(t *testing.T) { diff --git a/refstore/files/transaction_names_test.go b/refstore/files/transaction_names_test.go index 2ef23e0d..03c288b1 100644 --- a/refstore/files/transaction_names_test.go +++ b/refstore/files/transaction_names_test.go @@ -4,7 +4,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/ref" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/transaction_pseudoref_test.go b/refstore/files/transaction_pseudoref_test.go index 5ecae07b..4e7af666 100644 --- a/refstore/files/transaction_pseudoref_test.go +++ b/refstore/files/transaction_pseudoref_test.go @@ -5,7 +5,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/transaction_queue_ops.go b/refstore/files/transaction_queue_ops.go index e7000c6a..047518c4 100644 --- a/refstore/files/transaction_queue_ops.go +++ b/refstore/files/transaction_queue_ops.go @@ -1,6 +1,6 @@ package files -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" func (tx *Transaction) Create(name string, newID objectid.ObjectID) error { return tx.queue(queuedUpdate{name: name, kind: updateCreate, newID: newID}) diff --git a/refstore/files/transaction_symbolic_test.go b/refstore/files/transaction_symbolic_test.go index 1524d52e..d0a601f1 100644 --- a/refstore/files/transaction_symbolic_test.go +++ b/refstore/files/transaction_symbolic_test.go @@ -5,7 +5,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/transaction_update_test.go b/refstore/files/transaction_update_test.go index 58546341..b9bd5a2d 100644 --- a/refstore/files/transaction_update_test.go +++ b/refstore/files/transaction_update_test.go @@ -6,7 +6,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/ref" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/update_direct_ref.go b/refstore/files/update_direct_ref.go index fb9a83ae..3b429be0 100644 --- a/refstore/files/update_direct_ref.go +++ b/refstore/files/update_direct_ref.go @@ -1,6 +1,6 @@ package files -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" type directRefKind uint8 diff --git a/refstore/files/update_operation_queue.go b/refstore/files/update_operation_queue.go index 05039ce3..ef7ced2f 100644 --- a/refstore/files/update_operation_queue.go +++ b/refstore/files/update_operation_queue.go @@ -1,6 +1,6 @@ package files -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" type queuedUpdate struct { name string diff --git a/refstore/files/update_validate.go b/refstore/files/update_validate.go index 9449fda5..94a53fb7 100644 --- a/refstore/files/update_validate.go +++ b/refstore/files/update_validate.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/ref/refname" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/files/worktree_test.go b/refstore/files/worktree_test.go index 2e24fb01..4a66b7a6 100644 --- a/refstore/files/worktree_test.go +++ b/refstore/files/worktree_test.go @@ -6,7 +6,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/refstore" ) diff --git a/refstore/transaction.go b/refstore/transaction.go index 5d090696..a70cd3d4 100644 --- a/refstore/transaction.go +++ b/refstore/transaction.go @@ -1,6 +1,6 @@ package refstore -import "codeberg.org/lindenii/furgit/objectid" +import objectid "codeberg.org/lindenii/furgit/object/id" // Transaction stages reference updates for one atomic commit. // diff --git a/repository/algorithm.go b/repository/algorithm.go index 22326cbd..90ce188c 100644 --- a/repository/algorithm.go +++ b/repository/algorithm.go @@ -4,7 +4,7 @@ import ( "fmt" "codeberg.org/lindenii/furgit/config" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func detectObjectAlgorithm(cfg *config.Config) (objectid.Algorithm, error) { diff --git a/repository/objects.go b/repository/objects.go index 965a9f68..eb458152 100644 --- a/repository/objects.go +++ b/repository/objects.go @@ -5,7 +5,7 @@ import ( "fmt" "os" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objectloose "codeberg.org/lindenii/furgit/objectstore/loose" objectmix "codeberg.org/lindenii/furgit/objectstore/mix" diff --git a/repository/refs_test.go b/repository/refs_test.go index bcd72269..d01dda19 100644 --- a/repository/refs_test.go +++ b/repository/refs_test.go @@ -4,7 +4,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" "codeberg.org/lindenii/furgit/ref" ) diff --git a/repository/repository.go b/repository/repository.go index 376c9bd7..f0306752 100644 --- a/repository/repository.go +++ b/repository/repository.go @@ -5,7 +5,7 @@ import ( "os" "codeberg.org/lindenii/furgit/config" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/objectstore" objectloose "codeberg.org/lindenii/furgit/objectstore/loose" objectpacked "codeberg.org/lindenii/furgit/objectstore/packed" diff --git a/repository/stored_test.go b/repository/stored_test.go index 47b61fe9..f8eac6f0 100644 --- a/repository/stored_test.go +++ b/repository/stored_test.go @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" ) func TestReadStoredTyped(t *testing.T) { diff --git a/repository/traversal_test.go b/repository/traversal_test.go index 791db9d0..403ee788 100644 --- a/repository/traversal_test.go +++ b/repository/traversal_test.go @@ -9,7 +9,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" "codeberg.org/lindenii/furgit/repository" ) diff --git a/repository/write_loose_test.go b/repository/write_loose_test.go index c38dd553..a0354f98 100644 --- a/repository/write_loose_test.go +++ b/repository/write_loose_test.go @@ -5,7 +5,7 @@ import ( "testing" "codeberg.org/lindenii/furgit/internal/testgit" - "codeberg.org/lindenii/furgit/objectid" + objectid "codeberg.org/lindenii/furgit/object/id" objecttype "codeberg.org/lindenii/furgit/object/type" ) -- cgit v1.3.1-10-gc9f91