Skip to content
Snippets Groups Projects
Commit 982515cf authored by Constantine Plotnikov's avatar Constantine Plotnikov Committed by Shawn O. Pearce
Browse files

Make the default encoding when reading commits UTF-8


When reading commits the system default encoding was used if no
encoding was specified in the commit. The patch modifies the test
to add a check that commit message was encoded correctly (the
test fails on old implementation if system encoding is not UTF-8)
and fixes Commit.decode() method to use UTF-8 if encoding is not
specified in the commit object.

Change-Id: I27101da3c2eb6edd0c4a9e4c0523e48b286e3cd5
Signed-off-by: default avatarConstantine Plotnikov <constantine.plotnikov@gmail.com>
Signed-off-by: default avatarShawn O. Pearce <spearce@spearce.org>
parent aa08a022
No related merge requests found
......@@ -344,6 +344,9 @@ public void test023_createCommitNonAnullii() throws IOException {
commit.setMessage("\u00dcbergeeks");
ObjectId cid = new ObjectWriter(db).writeCommit(commit);
assertEquals("4680908112778718f37e686cbebcc912730b3154", cid.name());
Commit loadedCommit = db.mapCommit(cid);
assertNotSame(loadedCommit, commit);
assertEquals(commit.getMessage(), loadedCommit.getMessage());
}
public void test024_createCommitNonAscii() throws IOException {
......
......@@ -305,17 +305,13 @@ private void decode() {
br.read(readBuf);
int msgstart = readBuf.length != 0 ? ( readBuf[0] == '\n' ? 1 : 0 ) : 0;
if (encoding != null) {
// TODO: this isn't reliable so we need to guess the encoding from the actual content
author = new PersonIdent(new String(rawAuthor.getBytes(),encoding.name()));
committer = new PersonIdent(new String(rawCommitter.getBytes(),encoding.name()));
message = new String(readBuf,msgstart, readBuf.length-msgstart, encoding.name());
} else {
// TODO: use config setting / platform / ascii / iso-latin
author = new PersonIdent(new String(rawAuthor.getBytes()));
committer = new PersonIdent(new String(rawCommitter.getBytes()));
message = new String(readBuf, msgstart, readBuf.length-msgstart);
}
// If encoding is not specified, the default for commit is UTF-8
if (encoding == null) encoding = Constants.CHARSET;
// TODO: this isn't reliable so we need to guess the encoding from the actual content
author = new PersonIdent(new String(rawAuthor.getBytes(),encoding.name()));
committer = new PersonIdent(new String(rawCommitter.getBytes(),encoding.name()));
message = new String(readBuf,msgstart, readBuf.length-msgstart, encoding.name());
} catch (IOException e) {
e.printStackTrace();
} finally {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment