]> source.dussan.org Git - jgit.git/commitdiff
Allow JGit to read C Git rebase state 18/7118/2
authorRobin Rosenberg <robin.rosenberg@dewire.com>
Tue, 7 Aug 2012 14:49:45 +0000 (16:49 +0200)
committerRobin Rosenberg <robin.rosenberg@dewire.com>
Tue, 7 Aug 2012 14:49:45 +0000 (16:49 +0200)
C Git prefixes the time stamp in the author script with a "@"

Change-Id: I140b29519acc101da78296eef562368fc6b61135

org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java

index 4a7a45e8f76e4d34a1cdcc713a6bb38b81d803db..edb36b81fe5b629d5facfdb1042f086833890f57 100644 (file)
@@ -975,7 +975,7 @@ public class RebaseCommandTest extends RepositoryTestCase {
                String[] lines = convertedAuthor.split("\n");
                assertEquals("GIT_AUTHOR_NAME='Author name'", lines[0]);
                assertEquals("GIT_AUTHOR_EMAIL='a.mail@some.com'", lines[1]);
-               assertEquals("GIT_AUTHOR_DATE='123456789 -0100'", lines[2]);
+               assertEquals("GIT_AUTHOR_DATE='@123456789 -0100'", lines[2]);
 
                PersonIdent parsedIdent = git.rebase().parseAuthor(
                                convertedAuthor.getBytes("UTF-8"));
@@ -992,7 +992,7 @@ public class RebaseCommandTest extends RepositoryTestCase {
                lines = convertedAuthor.split("\n");
                assertEquals("GIT_AUTHOR_NAME='Author name'", lines[0]);
                assertEquals("GIT_AUTHOR_EMAIL='a.mail@some.com'", lines[1]);
-               assertEquals("GIT_AUTHOR_DATE='123456789 +0930'", lines[2]);
+               assertEquals("GIT_AUTHOR_DATE='@123456789 +0930'", lines[2]);
 
                parsedIdent = git.rebase().parseAuthor(
                                convertedAuthor.getBytes("UTF-8"));
index 6f0c3eb0f4c363dfcdd72dd9d3fed3d181919497..9f8aa7bfb2613fbf26662ba1389f13a0e2f8b0e9 100644 (file)
@@ -439,6 +439,7 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
                // representation for date and timezone
                sb.append(GIT_AUTHOR_DATE);
                sb.append("='");
+               sb.append("@"); // @ for time in seconds since 1970
                String externalString = author.toExternalString();
                sb
                                .append(externalString.substring(externalString
@@ -1013,7 +1014,13 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
                String time = keyValueMap.get(GIT_AUTHOR_DATE);
 
                // the time is saved as <seconds since 1970> <timezone offset>
-               long when = Long.parseLong(time.substring(0, time.indexOf(' '))) * 1000;
+               int timeStart = 0;
+               if (time.startsWith("@"))
+                       timeStart = 1;
+               else
+                       timeStart = 0;
+               long when = Long
+                               .parseLong(time.substring(timeStart, time.indexOf(' '))) * 1000;
                String tzOffsetString = time.substring(time.indexOf(' ') + 1);
                int multiplier = -1;
                if (tzOffsetString.charAt(0) == '+')