Browse Source

Allow JGit to read C Git rebase state

C Git prefixes the time stamp in the author script with a "@"

Change-Id: I140b29519acc101da78296eef562368fc6b61135
stable-2.1
Robin Rosenberg 13 years ago
parent
commit
993fcac2d3
  1. 4
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
  2. 9
      org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java

4
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java

@ -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"));

9
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java

@ -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) == '+')

Loading…
Cancel
Save