使用git列出按引入日期排序的代码中的TODO

时间:2017-05-09 13:40:35

标签: git todo

我想显示我的代码中所有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来自己解决这个问题。有什么想法吗?

1 个答案:

答案 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部分)。