我有一些错误的第三方脚本,它会生成一些文件,我想放入 git 。现在,脚本确实工作得很好,但有时会失败并删除文件(我知道这很糟糕,......)。
现在,我想检测一下,当文件删除被添加到索引并过滤掉时。我能想出的唯一解决方案是git diff
并搜索deleted file mode
并回溯到路径。但这看起来确实很难看。
有更好的过滤方法吗?
答案 0 :(得分:1)
请注意,简单的git add
只会添加新文件或已修改的文件,而不会删除已删除的文件
为此,您需要git add -u
or git add -A
。
这意味着可以考虑在您的脚本和提交之后仅执行<E extends Exception>
。
然后public final class LambdaExceptionUtil {
@FunctionalInterface
public interface Function_WithExceptions<T, R, E extends Exception> {
R apply(T t) throws E;
}
/**
* .map(rethrowFunction(name -> Class.forName(name))) or .map(rethrowFunction(Class::forName))
*/
public static <T, R, E extends Exception> Function<T, R> rethrowFunction(Function_WithExceptions<T, R, E> function) throws E {
return t -> {
try {
return function.apply(t);
} catch (Exception exception) {
throwActualException(exception);
return null;
}
};
}
@SuppressWarnings("unchecked")
private static <E extends Exception> void throwActualException(Exception exception) throws E {
throw (E) exception;
}
}
public class LambdaExceptionUtilTest {
@Test
public void testFunction() throws MyTestException {
List<Integer> sizes = Stream.of("ciao", "hello").<Integer>map(rethrowFunction(s -> transform(s))).collect(toList());
assertEquals(2, sizes.size());
assertEquals(4, sizes.get(0).intValue());
assertEquals(5, sizes.get(1).intValue());
}
private Integer transform(String value) throws MyTestException {
if(value==null) {
throw new MyTestException();
}
return value.length();
}
private static class MyTestException extends Exception { }
}
将恢复所有已删除的文件。