diff options
author | john.mcdonnell <jmcdonnell@gitlab.com> | 2022-07-21 07:25:35 +0300 |
---|---|---|
committer | john.mcdonnell <jmcdonnell@gitlab.com> | 2022-07-22 02:29:50 +0300 |
commit | a4778e499b6da58a60f92b839a6a6b18408b7244 (patch) | |
tree | 4cc626c51ba7bbd75b4ae8ad239e1735f4c220c7 | |
parent | 942d8298610eded70b5204863048617ee1c136cd (diff) |
Fix a number of typosjmd-fixing-typos
Fixing a range of typos and grammatical errors across a number of
comments, tests and application errors.
29 files changed, 49 insertions, 37 deletions
diff --git a/internal/git/catfile/request_queue.go b/internal/git/catfile/request_queue.go index 5b1558efa..08da8b048 100644 --- a/internal/git/catfile/request_queue.go +++ b/internal/git/catfile/request_queue.go @@ -197,7 +197,7 @@ func (q *requestQueue) readInfo() (*ObjectInfo, error) { return nil, fmt.Errorf("cannot read object info: %w", os.ErrClosed) } - // We first need to determine wether there are any queued requests at all. If not, then we + // We first need to determine whether there are any queued requests at all. If not, then we // cannot read anything. queuedRequests := atomic.LoadInt64(&q.outstandingRequests) if queuedRequests == 0 { diff --git a/internal/git/command_description.go b/internal/git/command_description.go index a56580e0b..b17901dbb 100644 --- a/internal/git/command_description.go +++ b/internal/git/command_description.go @@ -157,7 +157,7 @@ var commandDescriptions = map[string]commandDescription{ ConfigPair{Key: "init.defaultBranch", Value: DefaultBranch}, // When creating a new repository, then Git will by default copy over all - // files from the femplate directory into the repository. These templates + // files from the template directory into the repository. These templates // are non-mandatory files which help the user to configure parts of Git // correctly, like hook templates or an exclude file. Given that repos // should not be touched by admins anyway as they are completely owned by @@ -441,7 +441,7 @@ func fsckConfiguration(prefix string) []GlobalOption { {key: "fsck.missingSpaceBeforeDate", value: "ignore"}, // Oldish Git versions used to zero-pad some filemodes, e.g. instead of a - // file mode of 40000 the tree object would have endcoded the filemode as + // file mode of 40000 the tree object would have encoded the filemode as // 04000. This doesn't cause any and Git can cope with it alright, so let's // ignore it. {key: "fsck.zeroPaddedFilemode", value: "ignore"}, diff --git a/internal/git/localrepo/objects.go b/internal/git/localrepo/objects.go index 56555f3a4..4616df7a5 100644 --- a/internal/git/localrepo/objects.go +++ b/internal/git/localrepo/objects.go @@ -74,7 +74,7 @@ func (e FormatTagError) Error() string { // because we're just about to run git's own "fsck" check on this. // // However, if someone injected parameters with extra newlines they -// could cause subsequent values to be ignore via a crafted +// could cause subsequent values to be ignored via a crafted // message. This someone could also locally craft a tag locally and // "git push" it. But allowing e.g. someone to provide their own // timestamp here would at best be annoying, and at worst run up diff --git a/internal/git/localrepo/refs.go b/internal/git/localrepo/refs.go index 492609d7a..2ba1d988d 100644 --- a/internal/git/localrepo/refs.go +++ b/internal/git/localrepo/refs.go @@ -170,7 +170,7 @@ func (repo *Repo) SetDefaultBranch(ctx context.Context, txManager transaction.Ma return repo.setDefaultBranchWithTransaction(ctx, txManager, reference) } -// setDefaultBranchWithTransaction sets the repostory's HEAD to point to the given reference +// setDefaultBranchWithTransaction sets the repository's HEAD to point to the given reference // using a safe locking file writer and commits the transaction if one exists in the context func (repo *Repo) setDefaultBranchWithTransaction(ctx context.Context, txManager transaction.Manager, reference git.ReferenceName) error { valid, err := git.CheckRefFormat(ctx, repo.gitCmdFactory, reference.String()) diff --git a/internal/git/localrepo/remote_test.go b/internal/git/localrepo/remote_test.go index 24bb0f879..18b2e7ded 100644 --- a/internal/git/localrepo/remote_test.go +++ b/internal/git/localrepo/remote_test.go @@ -70,7 +70,7 @@ func TestRepo_FetchRemote(t *testing.T) { var stderr bytes.Buffer require.NoError(t, repo.FetchRemote(ctx, "origin", FetchOpts{Stderr: &stderr})) - require.Empty(t, stderr.String(), "it should not produce output as it is called with --quite flag by default") + require.Empty(t, stderr.String(), "it should not produce output as it is called with --quiet flag by default") refs, err := repo.GetReferences(ctx) require.NoError(t, err) @@ -215,7 +215,7 @@ func TestRepo_FetchRemote(t *testing.T) { } // captureGitSSHCommand creates a new intercepting command factory which captures the -// GIT_SSH_COMMAND environment variable. The returned function can be used to read the variables's +// GIT_SSH_COMMAND environment variable. The returned function can be used to read the variable's // value. func captureGitSSHCommand(ctx context.Context, t testing.TB, cfg config.Cfg) (git.CommandFactory, func() ([]byte, error)) { envPath := filepath.Join(testhelper.TempDir(t), "GIT_SSH_PATH") @@ -259,7 +259,7 @@ func TestRepo_Push(t *testing.T) { repoProto, repoPath := gittest.InitRepo(t, cfg, cfg.Storages[0]) repo := New(locator, gitCmdFactory, catfileCache, repoProto) - // set up master as a divergin ref in push repo + // set up master as a diverging ref in push repo sourceMaster, err := sourceRepo.GetReference(ctx, "refs/heads/master") require.NoError(t, err) diff --git a/internal/git/objectpool/clone.go b/internal/git/objectpool/clone.go index ff549d703..79a88a035 100644 --- a/internal/git/objectpool/clone.go +++ b/internal/git/objectpool/clone.go @@ -10,7 +10,7 @@ import ( ) // clone a repository to a pool, without setting the alternates, is not the -// resposibility of this function. +// responsibility of this function. func (o *ObjectPool) clone(ctx context.Context, repo *localrepo.Repo) error { repoPath, err := repo.Path() if err != nil { diff --git a/internal/git/objectpool/pool.go b/internal/git/objectpool/pool.go index d1676c2af..fb140416a 100644 --- a/internal/git/objectpool/pool.go +++ b/internal/git/objectpool/pool.go @@ -25,7 +25,7 @@ func (err errString) Error() string { return string(err) } // ErrInvalidPoolDir is returned when the object pool relative path is malformed. const ErrInvalidPoolDir errString = "invalid object pool directory" -// ObjectPool are a way to dedup objects between repositories, where the objects +// ObjectPool are a way to de-dupe objects between repositories, where the objects // live in a pool in a distinct repository which is used as an alternate object // store for other repositories. type ObjectPool struct { @@ -128,7 +128,7 @@ func (o *ObjectPool) Remove(ctx context.Context) (err error) { return os.RemoveAll(o.FullPath()) } -// Init will intiailize an empty pool repository +// Init will initialize an empty pool repository // if one already exists, it will do nothing func (o *ObjectPool) Init(ctx context.Context) (err error) { targetDir := o.FullPath() diff --git a/internal/git/trailerparser/trailerparser.go b/internal/git/trailerparser/trailerparser.go index daea0a51b..64e97cf96 100644 --- a/internal/git/trailerparser/trailerparser.go +++ b/internal/git/trailerparser/trailerparser.go @@ -33,7 +33,7 @@ const ( // Where \0 is a NULL byte. The input should not end in a NULL byte. // // Trailers must be separated with a null byte, as their values can include any -// other separater character. NULL bytes however are not allowed in commit +// other separator character. NULL bytes however are not allowed in commit // messages, and thus can't occur in trailers. // // The key-value separator must be a colon, as this is the separator the Git CLI diff --git a/internal/gitaly/service/blob/get_blobs.go b/internal/gitaly/service/blob/get_blobs.go index f214ccc58..18694930f 100644 --- a/internal/gitaly/service/blob/get_blobs.go +++ b/internal/gitaly/service/blob/get_blobs.go @@ -109,7 +109,7 @@ func sendBlobTreeEntry( readLimit = limit } - // For correctness it does not matter, but for performance, the order is + // For correctness, it does not matter, but for performance, the order is // important: first check if readlimit == 0, if not, only then create // blobObj. if readLimit == 0 { diff --git a/internal/gitaly/service/commit/tree_entry.go b/internal/gitaly/service/commit/tree_entry.go index cafd1bed7..4ab6afb3a 100644 --- a/internal/gitaly/service/commit/tree_entry.go +++ b/internal/gitaly/service/commit/tree_entry.go @@ -65,7 +65,7 @@ func sendTreeEntry( if strings.ToLower(treeEntry.Type.String()) != objectInfo.Type { return helper.ErrInternalf( - "TreeEntry: mismatched nbject type: tree-oid=%s object-oid=%s entry-type=%s object-type=%s", + "TreeEntry: mismatched object type: tree-oid=%s object-oid=%s entry-type=%s object-type=%s", treeEntry.Oid, objectInfo.Oid, treeEntry.Type.String(), objectInfo.Type, ) } diff --git a/internal/gitaly/service/hook/pack_objects.go b/internal/gitaly/service/hook/pack_objects.go index 3d161a521..4a6d36e92 100644 --- a/internal/gitaly/service/hook/pack_objects.go +++ b/internal/gitaly/service/hook/pack_objects.go @@ -114,16 +114,16 @@ func (s *server) runPackObjects( key string, ) error { // We want to keep the context for logging, but we want to block all its - // cancelation signals (deadline, cancel etc.). This is because of + // cancellation signals (deadline, cancel etc.). This is because of // the following scenario. Imagine client1 calls PackObjectsHook and // causes runPackObjects to run in a goroutine. Now suppose that client2 // calls PackObjectsHook with the same arguments and stdin, so it joins // client1 in waiting for this goroutine. Now client1 hangs up before the // runPackObjects goroutine is done. // - // If the cancelation of client1 propagated into the runPackObjects + // If the cancellation of client1 propagated into the runPackObjects // goroutine this would affect client2. We don't want that. So to prevent - // that, we suppress the cancelation of the originating context. + // that, we suppress the cancellation of the originating context. ctx = helper.SuppressCancellation(ctx) ctx, cancel := context.WithCancel(ctx) diff --git a/internal/gitaly/service/hook/pre_receive_test.go b/internal/gitaly/service/hook/pre_receive_test.go index a8b8ed6d6..c6171174d 100644 --- a/internal/gitaly/service/hook/pre_receive_test.go +++ b/internal/gitaly/service/hook/pre_receive_test.go @@ -224,7 +224,7 @@ func TestPreReceive_APIErrors(t *testing.T) { expectedStderr: "GitLab: not allowed", }, { - desc: "/pre_receive endpoint fails to increase reference coutner", + desc: "/pre_receive endpoint fails to increase reference counter", allowedHandler: allowedHandler(t, true), preReceiveHandler: preReceiveHandler(t, false), expectedExitStatus: 1, diff --git a/internal/gitaly/service/internalgitaly/walkrepos_test.go b/internal/gitaly/service/internalgitaly/walkrepos_test.go index c9bda9922..56a8207cc 100644 --- a/internal/gitaly/service/internalgitaly/walkrepos_test.go +++ b/internal/gitaly/service/internalgitaly/walkrepos_test.go @@ -44,7 +44,7 @@ func TestWalkRepos(t *testing.T) { storageRoot := cfg.Storages[0].Path // file walk happens lexicographically, so we delete repository in the middle - // of the seqeuence to ensure the walk proceeds normally + // of the sequence to ensure the walk proceeds normally testRepo1, testRepo1Path := gittest.CloneRepo(t, cfg, cfg.Storages[0], gittest.CloneRepoOpts{ RelativePath: "a", }) diff --git a/internal/gitaly/service/objectpool/get_test.go b/internal/gitaly/service/objectpool/get_test.go index 138da8070..3fcef9f97 100644 --- a/internal/gitaly/service/objectpool/get_test.go +++ b/internal/gitaly/service/objectpool/get_test.go @@ -39,10 +39,10 @@ func TestGetObjectPoolSuccess(t *testing.T) { func TestGetObjectPoolNoFile(t *testing.T) { ctx := testhelper.Context(t) - _, repoo, _, _, client := setup(ctx, t) + _, repo, _, _, client := setup(ctx, t) resp, err := client.GetObjectPool(ctx, &gitalypb.GetObjectPoolRequest{ - Repository: repoo, + Repository: repo, }) require.NoError(t, err) diff --git a/internal/gitaly/service/operations/rebase_test.go b/internal/gitaly/service/operations/rebase_test.go index a21af7644..427fab641 100644 --- a/internal/gitaly/service/operations/rebase_test.go +++ b/internal/gitaly/service/operations/rebase_test.go @@ -215,7 +215,7 @@ func TestUserRebaseConfirmable_transaction(t *testing.T) { expectPreReceiveHook bool }{ { - desc: "non-transactonal does not vote but executes hook", + desc: "non-transactional does not vote but executes hook", expectedVotes: 0, expectPreReceiveHook: true, }, diff --git a/internal/gitaly/service/operations/squash.go b/internal/gitaly/service/operations/squash.go index ccc875628..7f2bc0881 100644 --- a/internal/gitaly/service/operations/squash.go +++ b/internal/gitaly/service/operations/squash.go @@ -70,7 +70,7 @@ func validateUserSquashRequest(req *gitalypb.UserSquashRequest) error { } if len(req.GetAuthor().GetEmail()) == 0 { - return errors.New("empty auithor email") + return errors.New("empty author email") } return nil diff --git a/internal/gitaly/service/operations/squash_test.go b/internal/gitaly/service/operations/squash_test.go index f79af65dd..ae063e9a4 100644 --- a/internal/gitaly/service/operations/squash_test.go +++ b/internal/gitaly/service/operations/squash_test.go @@ -774,6 +774,18 @@ func TestUserSquash_gitError(t *testing.T) { }, expectedErr: helper.ErrInvalidArgumentf("UserSquash: empty author name"), }, + { + desc: "author has no email set", + request: &gitalypb.UserSquashRequest{ + Repository: repo, + User: gittest.TestUser, + Author: &gitalypb.User{Name: gittest.TestUser.Name}, + CommitMessage: commitMessage, + StartSha: startSha, + EndSha: endSha, + }, + expectedErr: helper.ErrInvalidArgumentf("UserSquash: empty author email"), + }, } for _, tc := range testCases { diff --git a/internal/gitaly/service/operations/tags_test.go b/internal/gitaly/service/operations/tags_test.go index ca2c38b77..6782674eb 100644 --- a/internal/gitaly/service/operations/tags_test.go +++ b/internal/gitaly/service/operations/tags_test.go @@ -744,7 +744,7 @@ func TestSuccessfulUserCreateTagNestedTags(t *testing.T) { Tag: &gitalypb.Tag{ Name: request.TagName, Id: createdIDStr, - // TargetCommit: is dymamically determined, filled in below + // TargetCommit: is dynamically determined, filled in below Message: request.Message, MessageSize: int64(len(request.Message)), }, diff --git a/internal/gitaly/service/ref/delete_refs.go b/internal/gitaly/service/ref/delete_refs.go index 54e168f3e..0e58d8000 100644 --- a/internal/gitaly/service/ref/delete_refs.go +++ b/internal/gitaly/service/ref/delete_refs.go @@ -70,7 +70,7 @@ func (s *server) DeleteRefs(ctx context.Context, in *gitalypb.DeleteRefsRequest) if err := updater.Commit(); err != nil { // TODO: We should be able to easily drop this error here and return a real error as // soon as we always use proper locking semantics in git-update-ref(1). All locking - // issues would be catched when `Prepare()`ing the changes already, so a fail + // issues would be caught when `Prepare()`ing the changes already, so a fail // afterwards would hint at a real unexpected error. return &gitalypb.DeleteRefsResponse{GitError: fmt.Sprintf("unable to delete refs: %s", err.Error())}, nil } diff --git a/internal/gitaly/service/ref/refs_test.go b/internal/gitaly/service/ref/refs_test.go index aa4e0faff..8a231b7ac 100644 --- a/internal/gitaly/service/ref/refs_test.go +++ b/internal/gitaly/service/ref/refs_test.go @@ -855,7 +855,7 @@ func TestListBranchNamesContainingCommit(t *testing.T) { }, { // gitlab-test contains a branch refs/heads/1942eed5cc108b19c7405106e81fa96125d0be22 - // which is in conflift with a commit with the same ID + // which is in conflict with a commit with the same ID description: "branch name is also commit id", commitID: "1942eed5cc108b19c7405106e81fa96125d0be22", code: codes.OK, diff --git a/internal/gitaly/service/ref/testhelper_test.go b/internal/gitaly/service/ref/testhelper_test.go index 3c2fe0181..7ae83ffed 100644 --- a/internal/gitaly/service/ref/testhelper_test.go +++ b/internal/gitaly/service/ref/testhelper_test.go @@ -102,7 +102,7 @@ func assertContainsLocalBranch(t *testing.T, branches []*gitalypb.FindLocalBranc } testhelper.ProtoEqual(t, branch.Commit, b.Commit) - return // Found the branch and it maches. Success! + return // Found the branch and it matches. Success! } } t.Errorf("Expected to find branch %q in local branches", branch.Name) @@ -129,7 +129,7 @@ func assertContainsBranch(t *testing.T, branches []*gitalypb.FindAllBranchesResp for _, b := range branches { if bytes.Equal(branch.Name, b.Name) { testhelper.ProtoEqual(t, b.Target, branch.Target) - return // Found the branch and it maches. Success! + return // Found the branch and it matches. Success! } branchNames = append(branchNames, b.Name) } diff --git a/internal/gitaly/service/remote/update_remote_mirror.go b/internal/gitaly/service/remote/update_remote_mirror.go index 15d5fc4b0..9aeb5161c 100644 --- a/internal/gitaly/service/remote/update_remote_mirror.go +++ b/internal/gitaly/service/remote/update_remote_mirror.go @@ -185,7 +185,7 @@ func (s *server) updateRemoteMirror(stream gitalypb.RemoteService_UpdateRemoteMi continue } - // The commit in the extra branch in the remote repositoy has not been merged in to the + // The commit in the extra branch in the remote repository has not been merged in to the // local repository's default branch. Keep it to avoid losing work. delete(toDelete, remoteRef) } @@ -234,7 +234,7 @@ func (s *server) updateRemoteMirror(stream gitalypb.RemoteService_UpdateRemoteMi // be updated in the mirror repository. Tags are always matched successfully. // branchMatchers optionally contain patterns that are used to match branches. // The patterns should only include the branch name without the `refs/heads/` -// prefix. "*" can be used as a wilcard in the patterns. If no branchMatchers +// prefix. "*" can be used as a wildcard in the patterns. If no branchMatchers // are specified, all branches are matched successfully. func newReferenceMatcher(branchMatchers [][]byte) (*regexp.Regexp, error) { sb := &strings.Builder{} diff --git a/internal/gitaly/service/repository/create_repository_from_snapshot.go b/internal/gitaly/service/repository/create_repository_from_snapshot.go index 9a2e5bdc0..4965fd3bb 100644 --- a/internal/gitaly/service/repository/create_repository_from_snapshot.go +++ b/internal/gitaly/service/repository/create_repository_from_snapshot.go @@ -87,7 +87,7 @@ func (s *server) CreateRepositoryFromSnapshot(ctx context.Context, in *gitalypb. // it needs (especially, the config file and hooks directory). // // NOTE: The received archive is trusted *a lot*. Before pointing this RPC - // at endpoints not under our control, it should undergo a lot of hardning. + // at endpoints not under our control, it should undergo a lot of hardening. if err := untar(ctx, path, in); err != nil { return helper.ErrInternalf("extracting snapshot: %w", err) } diff --git a/internal/gitaly/service/repository/fetch.go b/internal/gitaly/service/repository/fetch.go index 4eff40cf1..ef10fee9b 100644 --- a/internal/gitaly/service/repository/fetch.go +++ b/internal/gitaly/service/repository/fetch.go @@ -76,7 +76,7 @@ func (s *server) FetchSourceBranch(ctx context.Context, req *gitalypb.FetchSourc []string{sourceOid.String()}, localrepo.FetchOpts{Tags: localrepo.FetchOptsTagsNone}, ); err != nil { - // Design quirk: if the fetch failse, this RPC returns Result: false, but no error. + // Design quirk: if the fetch fails, this RPC returns Result: false, but no error. if errors.As(err, &localrepo.ErrFetchFailed{}) { ctxlogrus.Extract(ctx). WithField("oid", sourceOid.String()). diff --git a/internal/gitaly/service/repository/license.go b/internal/gitaly/service/repository/license.go index 7dccd134b..55b28c4b0 100644 --- a/internal/gitaly/service/repository/license.go +++ b/internal/gitaly/service/repository/license.go @@ -98,7 +98,7 @@ func (f *gitFiler) ReadFile(path string) ([]byte, error) { // readme files as defined in licensedb.Detect: // https://github.com/go-enry/go-license-detector/blob/4f2ca6af2ab943d9b5fa3a02782eebc06f79a5f4/licensedb/internal/investigation.go#L61 // - // This doesn't filter out the possible license files identified from the readme files which may infact not + // This doesn't filter out the possible license files identified from the readme files which may in fact not // be licenses. if !f.foundLicense { f.foundLicense = !readmeRegexp.MatchString(strings.ToLower(path)) diff --git a/internal/gitaly/service/smarthttp/inforefs_test.go b/internal/gitaly/service/smarthttp/inforefs_test.go index 2ffe65c39..71486a0e9 100644 --- a/internal/gitaly/service/smarthttp/inforefs_test.go +++ b/internal/gitaly/service/smarthttp/inforefs_test.go @@ -359,7 +359,7 @@ func TestCacheInfoRefsUploadPack(t *testing.T) { rpcRequest := &gitalypb.InfoRefsRequest{Repository: repo} // The key computed for the cache entry takes into account all feature flags. Because - // Praefect explicitly injects all unset feature flags, the key is thus differend depending + // Praefect explicitly injects all unset feature flags, the key is thus different depending // on whether Praefect is in use or not. We thus manually inject all feature flags here such // that they're forced to the same state. for _, ff := range featureflag.DefinedFlags() { diff --git a/internal/gitaly/service/smarthttp/upload_pack_test.go b/internal/gitaly/service/smarthttp/upload_pack_test.go index 35843932f..0f3da43dc 100644 --- a/internal/gitaly/service/smarthttp/upload_pack_test.go +++ b/internal/gitaly/service/smarthttp/upload_pack_test.go @@ -479,7 +479,7 @@ func testServerPostUploadPackPartialClone(t *testing.T, ctx context.Context, mak // a4a132b1b0d6720ca9254440a7ba8a6b9bbd69ec is README.md, which is a small file blobLessThanLimit := git.ObjectID("a4a132b1b0d6720ca9254440a7ba8a6b9bbd69ec") - // c1788657b95998a2f177a4f86d68a60f2a80117f is CONTRIBUTING.md, which is > 200 bytese + // c1788657b95998a2f177a4f86d68a60f2a80117f is CONTRIBUTING.md, which is > 200 bytes blobGreaterThanLimit := git.ObjectID("c1788657b95998a2f177a4f86d68a60f2a80117f") gittest.RequireObjectExists(t, cfg, localRepoPath, blobLessThanLimit) diff --git a/internal/gitaly/service/ssh/upload_pack.go b/internal/gitaly/service/ssh/upload_pack.go index 89e67e9a9..45218721c 100644 --- a/internal/gitaly/service/ssh/upload_pack.go +++ b/internal/gitaly/service/ssh/upload_pack.go @@ -49,7 +49,7 @@ func (s *server) SSHUploadPack(stream gitalypb.SSHService_SSHUploadPackServer) e }) // gRPC doesn't allow concurrent writes to a stream, so we need to - // synchronize writing stdout and stderrr. + // synchronize writing stdout and stderr. var m sync.Mutex stdout := streamio.NewSyncWriter(&m, func(p []byte) error { return stream.Send(&gitalypb.SSHUploadPackResponse{Stdout: p}) diff --git a/internal/gitaly/service/ssh/upload_pack_test.go b/internal/gitaly/service/ssh/upload_pack_test.go index 3739d2617..e11c0cadc 100644 --- a/internal/gitaly/service/ssh/upload_pack_test.go +++ b/internal/gitaly/service/ssh/upload_pack_test.go @@ -619,7 +619,7 @@ func TestUploadPack_packObjectsHook(t *testing.T) { testcfg.BuildGitalySSH(t, cfg) - // We're using a custom pack-objetcs hook for git-upload-pack. In order + // We're using a custom pack-objects hook for git-upload-pack. In order // to assure that it's getting executed as expected, we're writing a // custom script which replaces the hook binary. It doesn't do anything // special, but writes an error message and errors out and should thus |