Fix encoding of LFSPointer files
LFS pointer files have to be UTF-8 with \n as line ending character. That is described in [1]. Fix JGit to follow this rules. [1] https://github.com/github/git-lfs/blob/master/docs/spec.md Bug: 507120 Change-Id: Ib6bd13f1cc17f1a3de125249b4f250b7b0692396
This commit is contained in:
parent
fe329f5db4
commit
1572964ecb
|
@ -7,6 +7,7 @@ Bundle-Vendor: %provider_name
|
|||
Bundle-Localization: plugin
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Import-Package: org.eclipse.jgit.junit;version="[4.6.0,4.7.0)",
|
||||
org.eclipse.jgit.lfs;version="[4.6.0,4.7.0)",
|
||||
org.eclipse.jgit.lfs.errors;version="[4.6.0,4.7.0)",
|
||||
org.eclipse.jgit.lfs.lib;version="[4.6.0,4.7.0)",
|
||||
org.eclipse.jgit.lib;version="[4.6.0,4.7.0)",
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* Copyright (C) 2016, Christian Halstrick <christian.halstrick@sap.com>
|
||||
* and other copyright owners as documented in the project's IP log.
|
||||
*
|
||||
* This program and the accompanying materials are made available
|
||||
* under the terms of the Eclipse Distribution License v1.0 which
|
||||
* accompanies this distribution, is reproduced below, and is
|
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
*
|
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the
|
||||
* names of its contributors may be used to endorse or promote
|
||||
* products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package org.eclipse.jgit.lfs.lib;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.eclipse.jgit.lfs.LfsPointer;
|
||||
import org.junit.Test;
|
||||
|
||||
/*
|
||||
* Test LfsPointer file abstraction
|
||||
*/
|
||||
public class LFSPointerTest {
|
||||
@Test
|
||||
public void testEncoding() throws IOException {
|
||||
final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
|
||||
AnyLongObjectId id = LongObjectId.fromString(s);
|
||||
LfsPointer ptr = new LfsPointer(id, 4);
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ptr.encode(baos);
|
||||
baos.close();
|
||||
assertEquals("version https://git-lfs.github.com/spec/v1\noid sha256:"
|
||||
+ s + "\nsize 4\n",
|
||||
baos.toString(StandardCharsets.UTF_8.name()));
|
||||
}
|
||||
}
|
|
@ -48,6 +48,9 @@
|
|||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.charset.UnsupportedCharsetException;
|
||||
|
||||
import org.eclipse.jgit.annotations.Nullable;
|
||||
import org.eclipse.jgit.lfs.lib.AnyLongObjectId;
|
||||
|
@ -109,13 +112,18 @@ public long getSize() {
|
|||
* written
|
||||
*/
|
||||
public void encode(OutputStream out) {
|
||||
try (PrintStream ps = new PrintStream(out)) {
|
||||
try (PrintStream ps = new PrintStream(out, false,
|
||||
StandardCharsets.UTF_8.name())) {
|
||||
ps.print("version "); //$NON-NLS-1$
|
||||
ps.println(VERSION);
|
||||
ps.print(VERSION + "\n"); //$NON-NLS-1$
|
||||
ps.print("oid " + HASH_FUNCTION_NAME + ":"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
ps.println(oid.name());
|
||||
ps.print(oid.name() + "\n"); //$NON-NLS-1$
|
||||
ps.print("size "); //$NON-NLS-1$
|
||||
ps.println(size);
|
||||
ps.print(size + "\n"); //$NON-NLS-1$
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// should not happen, we are using a standard charset
|
||||
throw new UnsupportedCharsetException(
|
||||
StandardCharsets.UTF_8.name());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,7 +145,7 @@ public static LfsPointer parseLfsPointer(InputStream in)
|
|||
long sz = -1;
|
||||
|
||||
try (BufferedReader br = new BufferedReader(
|
||||
new InputStreamReader(in))) {
|
||||
new InputStreamReader(in, StandardCharsets.UTF_8.name()))) {
|
||||
for (String s = br.readLine(); s != null; s = br.readLine()) {
|
||||
if (s.startsWith("#") || s.length() == 0) { //$NON-NLS-1$
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue