我需要生成今年已更改的所有文件的列表。
以下代码片段完成了这项工作 - 但运行大约需要10分钟:
for i in $(git ls-files)
do
if [[ $(git log -1 --date=short --format="%ad" -- $i) =~ 2016- ]]
then
echo $i
fi
done
如何以更有效的方式完成这项工作?
答案 0 :(得分:0)
根据90% duplicate,您只需package importxmltoapis;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.transformer.AbstractMessageTransformer;
public class DeleteBOM extends AbstractMessageTransformer{
public static final String BOM = "\uFEFF";
@Override
public Object transformMessage(MuleMessage message, String outputEncoding)
throws TransformerException {
String s="";
try {s = removeBOM(message.getPayloadAsString());} catch (Exception e) {e.printStackTrace();}
return s;
}
private static String removeBOM(String s) {
if (s.startsWith(BOM)) {
s = s.substring(1);
}
return s;
}
}
。
答案 1 :(得分:0)
这样做并且还列出了在任何提交中触及的文件,这些文件可能不再存在于当前版本中,或者可能已经分阶段存在或不存在:
git log --since=2016-01-01 --format=format:%H | \
xargs git show --format=format: --name-only | \
grep . | sort -u
它会比你的尝试更快,但它仍然会做很多工作;你必须看看你的特定存储库是否足够快。
如果您不需要完整的信息(即关于现在丢失的文件),只需在年度的第一次提交和HEAD之间执行git diff
...
答案 2 :(得分:0)
git diff --name-only $(git rev-list -1 --first-parent --before=2016-1-1 HEAD)