我想显示我的代码中所有TODO的列表,但是使用历史记录(Git)排序并显示最新的TODO。
有点像这里显示的结果:git – order commits introducing "TODO"s by date
但显示TODO的线条,而不是哈希。
应该是这样的:
Fri May 22 11:22:27 2015 +0200 - // TODO: Refactor this code
Fri Apr 25 17:32:13 2014 +0200 - // TODO: We should remove this when tests pass
Sat Mar 29 23:11:39 2014 +0100 - // TODO: Rename to FooBar
我不认为git log
可以证明这一点,但我不确定,而且我没有Git CLI mojo来自己解决这个问题。有什么想法吗?
答案 0 :(得分:2)
这是近似解决方案;格式化并不是你所要求的,所以你需要通过 public void onCreate(Bundle savedInstanceState) {
//call superclass
super.onCreate(savedInstanceState);
//set contect view
setContentView(R.layout.popupview);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
getWindow().setLayout((int) (width * .9), (int) (height * .7));
//---
word_lst = (ListView) findViewById(R.id.view_List);
DataBaseHelper db = new DataBaseHelper(getApplicationContext());
SQLiteDatabase sqdb = db.getWritableDatabase();
Cursor cur1 = sqdb.rawQuery("SELECT * FROM wordsdata ORDER BY Enno DESC", null);
TodoCursorAdapter todoAdapter = new TodoCursorAdapter(getApplicationContext(), cur1);
word_lst.setAdapter(todoAdapter);
LayoutInflater inflater = getLayoutInflater();
final ViewGroup header = (ViewGroup) inflater.inflate(R.layout.header, word_lst, false);
word_lst.addHeaderView(header, null, false);
或类似的东西来管理它,如果这很重要的话,可以对字段进行重新排序。
awk
它的工作原理如下:
git ls-tree -r -z --name-only HEAD -- . | xargs -0 -n1 git blame -c | grep TODO | sort -t\t -k3
获取存储库中的所有文件名git ls-tree -r -z --name-only HEAD -- .
为每个文件调用xargs -0 -n1 git blame -c
; git blame
告诉它在输出中的每个字段之间使用一个标签(稍后用于排序) - 这两个部分基于enter image description here的最佳答案-c
过滤掉不包含文字TODO的行grep TODO
使用制表符作为分隔符,按第三个字段排序(应该是日期)请注意,这会完全忽略时区(即它只是在原始日期排序而不考虑+0000部分)。