]> source.dussan.org Git - jgit.git/commitdiff
[pgm] Add describe --abbrev option 08/191008/2
authorMatthias Sohn <matthias.sohn@sap.com>
Sun, 20 Feb 2022 11:04:11 +0000 (12:04 +0100)
committerMatthias Sohn <matthias.sohn@sap.com>
Wed, 2 Mar 2022 08:56:04 +0000 (09:56 +0100)
Change-Id: I8adf2fad21db71b43266d3f274143eee6bc9dce2

org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/DescribeTest.java
org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java

index 4bad73b5b5a8ff8f6c4663ef4079573bddcd10cf..c78544309b018ac6f1d957dfd1de5fa8f3270728 100644 (file)
@@ -88,6 +88,31 @@ public class DescribeTest extends CLIRepositoryTestCase {
                                execute("git describe --match v1.*"));
        }
 
+       @Test
+       public void testDescribeCommitMatchAbbrev() throws Exception {
+               initialCommitAndTag();
+               secondCommit();
+               assertArrayEquals(new String[] { "v1.0-1-g56f6cebdf3f5", "" },
+                               execute("git describe --abbrev 12 --match v1.*"));
+       }
+
+       @Test
+       public void testDescribeCommitMatchAbbrevMin() throws Exception {
+               initialCommitAndTag();
+               secondCommit();
+               assertArrayEquals(new String[] { "v1.0-1-g56f6", "" },
+                               execute("git describe --abbrev -5 --match v1.*"));
+       }
+
+       @Test
+       public void testDescribeCommitMatchAbbrevMax() throws Exception {
+               initialCommitAndTag();
+               secondCommit();
+               assertArrayEquals(new String[] {
+                               "v1.0-1-g56f6cebdf3f5ceeecd803365abf0996fb1fa006d", "" },
+                               execute("git describe --abbrev 50 --match v1.*"));
+       }
+
        @Test
        public void testDescribeCommitMatch2() throws Exception {
                initialCommitAndTag();
index d51daafde38c94eed10f5c7c995db337e57e44fd..fda0bf6ff434bd9c0ab48cc50a146adbf4dea892 100644 (file)
@@ -229,6 +229,7 @@ unmergedPaths=Unmerged paths:
 unsupportedOperation=Unsupported operation: {0}
 untrackedFiles=Untracked files:
 updating=Updating {0}..{1}
+usage_Abbrev=Instead of using the default number of hexadecimal digits (which will vary according to the number of objects in the repository with a default of 7) of the abbreviated object name, use <n> digits, or as many digits as needed to form a unique object name. An <n> of 0 will suppress long format, only showing the closest tag.
 usage_Aggressive=This option will cause gc to more aggressively optimize the repository at the expense of taking much more time
 usage_AlwaysFallback=Show uniquely abbreviated commit object as fallback
 usage_bareClone=Make a bare Git repository. That is, instead of creating [DIRECTORY] and placing the administrative files in [DIRECTORY]/.git, make the [DIRECTORY] itself the $GIT_DIR.
index 8aa119a35803dff263d73a5a319f197631da57fb..116db037d4cd4beb2b234b464a5f7613abd12bee 100644 (file)
@@ -44,6 +44,9 @@ class Describe extends TextBuiltin {
        @Option(name = "--match", usage = "usage_Match", metaVar = "metaVar_pattern")
        private List<String> patterns = new ArrayList<>();
 
+       @Option(name = "--abbrev", usage = "usage_Abbrev")
+       private Integer abbrev;
+
        /** {@inheritDoc} */
        @Override
        protected void run() {
@@ -57,6 +60,9 @@ class Describe extends TextBuiltin {
                        cmd.setTags(useTags);
                        cmd.setAlways(always);
                        cmd.setMatch(patterns.toArray(new String[0]));
+                       if (abbrev != null) {
+                               cmd.setAbbrev(abbrev.intValue());
+                       }
                        String result = null;
                        try {
                                result = cmd.call();