Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 119459a

Browse files
committed
git: Discern tag target type from supplied hash
I figured there was a way to do this without having to have TagObjectOptions supply this in - there is. Added support for this in and removed the object type from TagObjectOptions. Signed-off-by: Chris Marchesi <chrism@vancluevertech.com>
1 parent 8d8d4c5 commit 119459a

File tree

3 files changed

+30
-41
lines changed

3 files changed

+30
-41
lines changed

options.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,6 @@ var (
383383
ErrMissingName = errors.New("name field is required")
384384
ErrMissingTagger = errors.New("tagger field is required")
385385
ErrMissingMessage = errors.New("message field is required")
386-
ErrBadObjectType = errors.New("bad object type for tagging")
387386
)
388387

389388
// TagObjectOptions describes how a tag object should be created.
@@ -394,9 +393,6 @@ type TagObjectOptions struct {
394393
// validation into the format expected by git - no leading whitespace and
395394
// ending in a newline.
396395
Message string
397-
// TargetType is the object type of the target. The object specified by
398-
// Target must be of this type.
399-
TargetType plumbing.ObjectType
400396
// SignKey denotes a key to sign the tag with. A nil value here means the tag
401397
// will not be signed. The private key must be present and already decrypted.
402398
SignKey *openpgp.Entity
@@ -415,14 +411,6 @@ func (o *TagObjectOptions) Validate(r *Repository, hash plumbing.Hash) error {
415411
// Canonicalize the message into the expected message format.
416412
o.Message = strings.TrimSpace(o.Message) + "\n"
417413

418-
if o.TargetType == plumbing.InvalidObject || o.TargetType == plumbing.AnyObject {
419-
return ErrBadObjectType
420-
}
421-
422-
if _, err := r.Object(o.TargetType, hash); err != nil {
423-
return err
424-
}
425-
426414
return nil
427415
}
428416

repository.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,11 +532,16 @@ func (r *Repository) createTagObject(name string, hash plumbing.Hash, opts *TagO
532532
return plumbing.ZeroHash, err
533533
}
534534

535+
rawobj, err := object.GetObject(r.Storer, hash)
536+
if err != nil {
537+
return plumbing.ZeroHash, err
538+
}
539+
535540
tag := &object.Tag{
536541
Name: name,
537542
Tagger: *opts.Tagger,
538543
Message: opts.Message,
539-
TargetType: opts.TargetType,
544+
TargetType: rawobj.Type(),
540545
Target: hash,
541546
}
542547

repository_test.go

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1333,9 +1333,8 @@ func (s *RepositorySuite) TestCreateTagAnnotated(c *C) {
13331333
expectedHash := h.Hash()
13341334

13351335
ref, err := r.CreateTag("foobar", expectedHash, &TagObjectOptions{
1336-
Tagger: defaultSignature(),
1337-
Message: "foo bar baz qux",
1338-
TargetType: plumbing.CommitObject,
1336+
Tagger: defaultSignature(),
1337+
Message: "foo bar baz qux",
13391338
})
13401339
c.Assert(err, IsNil)
13411340

@@ -1364,32 +1363,32 @@ func (s *RepositorySuite) TestCreateTagAnnotatedBadOpts(c *C) {
13641363
expectedHash := h.Hash()
13651364

13661365
ref, err := r.CreateTag("foobar", expectedHash, &TagObjectOptions{
1367-
Message: "foo bar baz qux",
1368-
TargetType: plumbing.CommitObject,
1366+
Message: "foo bar baz qux",
13691367
})
13701368
c.Assert(ref, IsNil)
13711369
c.Assert(err, Equals, ErrMissingTagger)
13721370

13731371
ref, err = r.CreateTag("foobar", expectedHash, &TagObjectOptions{
1374-
Tagger: defaultSignature(),
1375-
TargetType: plumbing.CommitObject,
1372+
Tagger: defaultSignature(),
13761373
})
13771374
c.Assert(ref, IsNil)
13781375
c.Assert(err, Equals, ErrMissingMessage)
1376+
}
13791377

1380-
ref, err = r.CreateTag("foobar", expectedHash, &TagObjectOptions{
1378+
func (s *RepositorySuite) TestCreateTagAnnotatedBadHash(c *C) {
1379+
url := s.GetLocalRepositoryURL(
1380+
fixtures.ByURL("https://github.com/git-fixtures/tags.git").One(),
1381+
)
1382+
1383+
r, _ := Init(memory.NewStorage(), nil)
1384+
err := r.clone(context.Background(), &CloneOptions{URL: url})
1385+
c.Assert(err, IsNil)
1386+
1387+
ref, err := r.CreateTag("foobar", plumbing.ZeroHash, &TagObjectOptions{
13811388
Tagger: defaultSignature(),
13821389
Message: "foo bar baz qux",
13831390
})
13841391
c.Assert(ref, IsNil)
1385-
c.Assert(err, Equals, ErrBadObjectType)
1386-
1387-
ref, err = r.CreateTag("foobar", expectedHash, &TagObjectOptions{
1388-
Tagger: defaultSignature(),
1389-
Message: "foo bar baz qux",
1390-
TargetType: plumbing.TagObject,
1391-
})
1392-
c.Assert(ref, IsNil)
13931392
c.Assert(err, Equals, plumbing.ErrObjectNotFound)
13941393
}
13951394

@@ -1407,10 +1406,9 @@ func (s *RepositorySuite) TestCreateTagSigned(c *C) {
14071406

14081407
key := commitSignKey(c, true)
14091408
_, err = r.CreateTag("foobar", h.Hash(), &TagObjectOptions{
1410-
Tagger: defaultSignature(),
1411-
Message: "foo bar baz qux",
1412-
TargetType: plumbing.CommitObject,
1413-
SignKey: key,
1409+
Tagger: defaultSignature(),
1410+
Message: "foo bar baz qux",
1411+
SignKey: key,
14141412
})
14151413
c.Assert(err, IsNil)
14161414

@@ -1447,10 +1445,9 @@ func (s *RepositorySuite) TestCreateTagSignedBadKey(c *C) {
14471445

14481446
key := commitSignKey(c, false)
14491447
_, err = r.CreateTag("foobar", h.Hash(), &TagObjectOptions{
1450-
Tagger: defaultSignature(),
1451-
Message: "foo bar baz qux",
1452-
TargetType: plumbing.CommitObject,
1453-
SignKey: key,
1448+
Tagger: defaultSignature(),
1449+
Message: "foo bar baz qux",
1450+
SignKey: key,
14541451
})
14551452
c.Assert(err, Equals, openpgperr.InvalidArgumentError("signing key is encrypted"))
14561453
}
@@ -1469,10 +1466,9 @@ func (s *RepositorySuite) TestCreateTagCanonicalize(c *C) {
14691466

14701467
key := commitSignKey(c, true)
14711468
_, err = r.CreateTag("foobar", h.Hash(), &TagObjectOptions{
1472-
Tagger: defaultSignature(),
1473-
Message: "\n\nfoo bar baz qux\n\nsome message here",
1474-
TargetType: plumbing.CommitObject,
1475-
SignKey: key,
1469+
Tagger: defaultSignature(),
1470+
Message: "\n\nfoo bar baz qux\n\nsome message here",
1471+
SignKey: key,
14761472
})
14771473
c.Assert(err, IsNil)
14781474

0 commit comments

Comments
 (0)