2 * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
10 * - Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
18 * - Neither the name of the Git Development Community nor the
19 * names of its contributors may be used to endorse or promote
20 * products derived from this software without specific prior
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
24 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
25 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
28 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
33 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
35 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 package org
.spearce
.jgit
.pgm
;
40 import org
.spearce
.jgit
.lib
.Constants
;
41 import org
.spearce
.jgit
.lib
.PersonIdent
;
43 class Tag
extends TextBuiltin
{
45 public void execute(String
[] args
) throws Exception
{
46 String tagName
= null;
47 String message
= null;
49 boolean force
= false;
52 for (int i
= 0; i
< args
.length
; ++i
) {
53 if (args
[i
].equals("-f")) {
57 if (args
[i
].equals("-m")) {
58 if (i
< args
.length
- 2)
59 message
= args
[i
++] + "\n";
64 if (args
[i
].startsWith("-m")) {
65 message
= args
[i
].substring(2) + "\n";
68 if (args
[i
].startsWith("-") && i
== args
.length
- 1)
70 if (i
== args
.length
- 2) {
76 if (i
== args
.length
- 1) {
82 if (!tagName
.startsWith(Constants
.TAGS_PREFIX
+ "/"))
83 tagName
= Constants
.TAGS_PREFIX
+ "/" + tagName
;
84 if (!force
&& db
.resolve(tagName
) != null) {
85 throw die("fatal: tag '"
86 + tagName
.substring(Constants
.TAGS_PREFIX
.length() + 1)
89 org
.spearce
.jgit
.lib
.Tag tag
= new org
.spearce
.jgit
.lib
.Tag(db
);
90 tag
.setObjId(db
.resolve(ref
));
91 if (message
!= null) {
92 message
= message
.replaceAll("\r", "");
93 tag
.setMessage(message
);
94 tag
.setTagger(new PersonIdent(db
));
95 tag
.setType("commit");
97 tag
.setTag(tagName
.substring(Constants
.TAGS_PREFIX
.length() + 1));
101 private void usage() {
102 throw die("Usage: [-m message] [-f] tag [head]");