のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

MAPI

VPNを構成しなくても実現する方法があります。Outlookとメールボックスサーバ間のMAPI/RPCプロトコル通信をHTTP/HTTPSでカプセルして、クライアントアクセスサーバを仲介役とする“Outlook Anywhere”機能
>

<diff.txt 直
diff_android-5.1.0_r1_android-5.1.1_r1.txt 直
diff_android-5.1.0_r1_android-5.1.1_r1_stat.txt 直
log_android-5.1.0_r1_android-5.1.1_r1.txt 直
diff_android-5.1.0_r1_android-5.1.1_r1_stat.txt 直
log_android-5.1.0_r1_android-5.1.1_r1.txt 直
diff_android-5.1.0_r1_android-5.1.1_r1.txt 直
diff.txt 直

cygwin64でrepoを使うとき、エラー:error: repo is not installed. Use "repo init" to install it here.

cygwin64を久しぶりに使った。

$repo
error: repo is not installed.  Use "repo init" to install it here.

どうして、エラーになるのか、わかりませんでした。
PATHは、.bash_profileで~/binに通してあります。
PATHも通っているし。

23 # Set PATH so it includes user's private bin if it exists
24 if [ -d "${HOME}/bin" ] ; then
25   PATH="${HOME}/bin:${PATH}"
26 fi

whichでも、repoのコマンド位置が正常に引ける。

$ which repo
/home/m_fujii/bin/repo

エラーになる原因は、repoにコマンド引数(initやhelp,-h)がないことでした。
"repo -help"はエラーになりました。

$ repo help
usage: repo COMMAND [ARGS]

repo is not yet installed.  Use "repo init" to install it here.

The most commonly used repo commands are:

  init      Install repo in the current working directory
  help      Display detailed help on a command

For access to the full online help, install repo ("repo init").

675 def _NotInstalled(): 
676   _print('error: repo is not installed.  Use "repo init" to install it here.', <===出ているメッセージ
677         file=sys.stderr)
678  sys.exit(1)
731  if not repo_main:
732    if opt.help:
733      _Usage()
734    if cmd == 'help':
735      _Help(args)
736    if not cmd:     <=== 引数がないと、ここに入るようです。
737      _NotInstalled()  <=== ここ
738    if cmd == 'init':
739      if my_git:
740        _SetDefaultsTo(my_git)
741

opt.helpの値

628 def _ParseArguments(args):
629  cmd = None
630  opt = _Options()
631  arg = []
632
633  for i in range(len(args)):
634    a = args[i]
635    if a == '-h' or a == '--help':
636      opt.help = True          <===
637
638    elif not a.startswith('-'):
639      cmd = a
640      arg = args[i + 1:]
641      break
642  return cmd, opt, arg

AOSP Android 差分

前準備

$ mkdir android
$ cd android
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1..1_r1
$ repo sync

ファイル差分すべてを取得

$ repo forall -p -c git diff android-5.1.0_r1..android-5.1.1_r1 > diff_android-5.1.0_r1_android-5.1.1_r1.txt

diff_android-5.1.0_r1_android-5.1.1_r1.txt 直
変更されたファイルの一覧と変更行数を取得

$ repo forall -p -c git diff --stat android-5.1.0_r1..android-5.1.1_r1 > diff_android-5.1.0_r1_android-5.1.1_r1_stat.txt

diff_android-5.1.0_r1_android-5.1.1_r1_stat.txt 直
ディレクトリ毎の変更量(%)を取得

$ repo forall -p -c git diff --dirstat android-5.1.0_r1..android-5.1.1_r1 > diff

diff.txt 直

TAG間のlog(コミットタイトル)を取得

$ repo forall -p -c git log --oneline --no-merges android-5.1.0_r1..android-5.1.1_r1 > log_android-5.1.0_r1_android-5.1.1_r1.txt

log_android-5.1.0_r1_android-5.1.1_r1.txt 直

baroqueworksdevさんの日記をもとに、5.1.0と5.1.1に改造

AOSPのTag間のdiffとlogを取得する

githubでの比較
https://github.com/android/platform_frameworks_base/compare/android-5.1.0_r1...android-5.1.1_r1