実装してコミットした後にどれぐらい変更をしたのか(頑張ったのか)をざっくりでも知りたいなぁと前々から思っていてなんとか実現できないものかと調べ始みてる。
git log から + と - の変更行を抜き出して単純にステップ数を出してもいいのだけどあまり面白くないし、+ は単純な行追加とは限らないし、- も単純な行削除とは限らない。修正前後の変化量をもうちょっと突っ込んで知りたい。ぐぐる。
LCS(Longest Common Subsequence)
diffの動作原理を知る~どのようにして差分を導き出すのか
2つの要素列の最長共通部分列
細かいところは分からないけど、そういうことができるらしい。
ということは共通部分が分かるなら、それを除けば変更箇所が分かるくね?
gem 発見。
Diff::LCS computes the difference between two Enumerable sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
diff-lcs
たとえば修正して増えた場合の比較をしてみる
content1 → content2 に修正した想定で、共通部分を取得してみる
require 'diff/lcs' content1 =<<EOF class Test def initialize end def say puts 'hello' end end EOF content2 =<<EOF class Test def hoge puts 'hello hoge' end def say puts 'hello world' end end EOF lcs = Diff::LCS.LCS(content1, content2) p lcs
結果
["c", "l", "a", "s", "s", " ", "T", "e", "s", "t", "\n", " ", " ", "d", "e", "f", " ", "t", "l", "e", "\n", " ", " ", "e", "n", "d", "\n", " ", " ", "d", "e", "f", " ", "s", "a", "y", "\n", " ", " ", " ", " ", "p", "u", "t", "s", " ", "'", "h", "e", "l", "l", "o", "'", "\n", " ", " ", "e", "n", "d", "\n", "e", "n", "d", "\n"]
ここまで分かるなら、それぞれから共通部分の長さを引いたものを修正量として扱えるんじゃないだろうか (てきとう)。
puts lcs.length puts "#{content1.length} - #{lcs.length} = #{content1.length - lcs.length}" puts "#{content2.length} - #{lcs.length} = #{content2.length - lcs.length}" # 64 # 71 - 64 = 7 # 93 - 64 = 29
とりあえず、大きい方を変更度として扱うことにする。この場合は 29 が変更度
ほんとにあってんのか検証してみる
修正前で共通部分の背景色を変更
class Test\n
def initialize\n
end\n
def say\n
puts 'hello'\n
end\n
end\n
修正後で共通部分の背景色を変更
class Test\n
def hoge\n
puts 'hello hoge'\n
end\n
def say\n
puts 'hello world'\n
end\n
end\n
これを反転すれば変更されたところが分かるはず。
修正前の変更箇所の背景色を変更
class Test\n
def initialize\n
end
def say\n
puts 'hello'\n
end\n
end\n
修正後の変更箇所の背景色を変更
class Test\n
def hoge\n
puts 'hello hoge'\n
end\n
def say\n
puts 'hello world'\n
end\n
end\n
文字数をカウントすると、一致するので、あってるっぽい。
修正して減った場合
他のパターンも試してみる
content1 =<<EOF class Test def initialize end def say puts 'hello' end end EOF content2 =<<EOF class Test def say puts 'hello' end end EOF lcs = Diff::LCS.LCS(content1, content2) p lcs puts lcs.length puts "#{content1.length} - #{lcs.length} = #{content1.length - lcs.length}" puts "#{content2.length} - #{lcs.length} = #{content2.length - lcs.length}"
結果
["c", "l", "a", "s", "s", " ", "T", "e", "s", "t", "\n", " ", " ", "d", "e", "f", " ", "s", "a", "y", "\n", " ", " ", " ", " ", "p", "u", "t", "s", " ", "'", "h", "e", "l", "l", "o", "'", "\n", " ", " ", "e", "n", "d", "\n", "e", "n", "d", "\n"] 48 71 - 48 = 23 48 - 48 = 0
変更度を 23 とする
修正して増減した場合
content1 =<<EOF class Test def initialize end def say puts 'hello' end end EOF content2 =<<EOF class Test def say puts 'hello' puts 'world' end end EOF lcs = Diff::LCS.LCS(content1, content2) p lcs puts lcs.length puts "#{content1.length} - #{lcs.length} = #{content1.length - lcs.length}" puts "#{content2.length} - #{lcs.length} = #{content2.length - lcs.length}"
結果
["c", "l", "a", "s", "s", " ", "T", "e", "s", "t", "\n", " ", " ", "d", "e", "f", " ", "s", "a", "y", "\n", " ", " ", " ", " ", "p", "u", "t", "s", " ", "'", "h", "e", "l", "l", "o", "'", "\n", " ", " ", "e", "n", "d", "\n", "e", "n", "d", "\n"] 48 71 - 48 = 23 65 - 48 = 17
変更度を 23 とする。
tweetvim の変更度を調べるスクリプトを書いてみる
とりあえず直近 100 コミット
#!/usr/bin/env ruby require 'diff/lcs' Dir.chdir(File.expand_path('~/repos/vimfiles/gitplugins/TweetVim')) ENV['GIT_PAGER'] = '' class Status def initialize @statuses = {} @files = [] end def [](key) @statuses[key] end def files @files end def add(line) line.chomp! if line =~ /^commit/ @statuses[:commit] = line.split(' ')[1] elsif line =~ /^Author/ @statuses[:author] = line.split(': ')[1] elsif line =~ /^Date/ @statuses[:date] = line.split(': ')[1] elsif line =~ /^[MAD]\t/ @files << line.split("\t")[1] end end end def get_content(commit, file_path) IO.popen("git show #{commit}:#{file_path} 2>/dev/null") { |io| io.read } end statuses = [] status = nil IO.popen('git log --name-status') do |io| while line = io.gets if line =~ /^commit/ statuses << status if status status = Status.new end status.add(line) break if statuses.length > 100 end end for i in 0...100 total = 0 point_logs = [] current = statuses[i] prev = statuses[i+1] for file in statuses[i].files content1 = get_content(current[:commit], file) content2 = get_content(prev[:commit], file) lcs = Diff::LCS.LCS(content1, content2) v1 = lcs.length - content1.length v2 = lcs.length - content2.length v1 = v1 * -1 if v1 < 0 v2 = v2 * -1 if v2 < 0 point = v1 > v2 ? v1 : v2 total += point point_logs << point.to_s.rjust(16) + " " + file + " (#{v1} : #{v2})" end puts "#{total.to_s.rjust(8)} : #{current[:commit]} | #{current[:author]} | #{current[:date]}" point_logs.each {|log| puts log } puts '' if point_logs.empty? end
出力形式
コミットの変更度 : コミット | ユーザ | 日付
ファイルの変更度 ファイル名 (修正前に対する変更度 : 修正後に対する変更度)結果
0 : 6bcf7d95c0289289794499b0959e20bfb91b750d | basyura | Sat Feb 15 22:26:08 2014
71 : 1f017a3d2ad61dd70f1265b50c4f4d3d8ba2b704 | Shohei Fujii | Sat Feb 15 16:12:26 2014
71 autoload/tweetvim.vim (71 : 0)
43 : 9478169f4213b9e59b37e416a925a783c36a6db5 | basyura | Sat Dec 7 17:17:02 2013
43 autoload/tweetvim.vim (43 : 0)
930 : a5c80c116c2b660d81af75872c12b6313f48e903 | basyura | Sun Nov 17 22:28:48 2013
408 autoload/tweetvim.vim (408 : 347)
11 autoload/tweetvim/action/reload.vim (11 : 0)
60 autoload/tweetvim/filter.vim (60 : 0)
436 autoload/tweetvim/filter/userstream.vim (436 : 0)
15 plugin/tweetvim.vim (15 : 0)
86 : d33d0ff7c8fb64cfe63b526cdf030521dfe6fcda | basyura | Sun Nov 17 10:49:03 2013
32 autoload/tweetvim.vim (32 : 0)
54 autoload/tweetvim/action/reload.vim (54 : 1)
305 : 51acfa535fbb984889d0369cb476e3110db94846 | basyura | Mon Nov 4 17:26:37 2013
97 autoload/tweetvim/say.vim (97 : 84)
208 plugin/tweetvim.vim (208 : 0)
1 : 9bc7fef07a2741862f2080746d9a348210afdc0a | basyura | Mon Nov 4 09:49:27 2013
1 autoload/tweetvim/buffer.vim (1 : 0)
41 : 19dad61e2fd0509baa2b54d2837b0814348af5a6 | basyura | Mon Nov 4 09:44:04 2013
41 autoload/tweetvim/say.vim (41 : 0)
56 : c42bde480f5636e6d2ea30e5f7f15a16344360e1 | basyura | Sun Nov 3 14:27:38 2013
56 autoload/tweetvim/say.vim (42 : 56)
21 : 264b690b1999477e842d065798f6ab53d4729424 | basyura | Mon Oct 14 22:18:30 2013
21 autoload/unite/sources/tweetvim_add_to_list.vim (21 : 15)
283698 : f27a88d29384f494255050fbe028e2ffeeac4e6e | basyura | Sun Oct 13 08:40:06 2013
5445 autoload/vital/_5de2c28.vim (5445 : 0)
6788 autoload/vital/_5de2c28/Bitwise.vim (6788 : 0)
2710 autoload/vital/_5de2c28/Data/Base64.vim (2710 : 0)
357 autoload/vital/_5de2c28/Data/Collection.vim (357 : 0)
1280 autoload/vital/_5de2c28/Data/Dict.vim (1280 : 0)
5118 autoload/vital/_5de2c28/Data/LazyList.vim (5118 : 0)
6975 autoload/vital/_5de2c28/Data/List.vim (6975 : 0)
2387 autoload/vital/_5de2c28/Data/OrderedSet.vim (2387 : 0)
5879 autoload/vital/_5de2c28/Data/String.vim (5879 : 0)
1609 autoload/vital/_5de2c28/Data/Tree.vim (1609 : 0)
2661 autoload/vital/_5de2c28/Database/SQLite.vim (2661 : 0)
22024 autoload/vital/_5de2c28/DateTime.vim (22024 : 0)
2272 autoload/vital/_5de2c28/Experimental/Functor.vim (2272 : 0)
1249 autoload/vital/_5de2c28/Locale/Message.vim (1249 : 0)
4318 autoload/vital/_5de2c28/Mapping.vim (4318 : 0)
416 autoload/vital/_5de2c28/Math.vim (416 : 0)
11319 autoload/vital/_5de2c28/Prelude.vim (11319 : 0)
2828 autoload/vital/_5de2c28/Process.vim (2828 : 0)
2696 autoload/vital/_5de2c28/ProcessManager.vim (2696 : 0)
811 autoload/vital/_5de2c28/Random/Xor128.vim (811 : 0)
2255 autoload/vital/_5de2c28/System/Cache.vim (2255 : 0)
4268 autoload/vital/_5de2c28/System/File.vim (4268 : 0)
4608 autoload/vital/_5de2c28/System/Filepath.vim (4608 : 0)
1848 autoload/vital/_5de2c28/Text/CSV.vim (1848 : 0)
1276 autoload/vital/_5de2c28/Text/LTSV.vim (1276 : 0)
2545 autoload/vital/_5de2c28/Text/Lexer.vim (2545 : 0)
1608 autoload/vital/_5de2c28/Text/Parser.vim (1608 : 0)
190 autoload/vital/_5de2c28/Vim/Buffer.vim (190 : 0)
5076 autoload/vital/_5de2c28/Vim/BufferManager.vim (5076 : 0)
1138 autoload/vital/_5de2c28/Vim/Compat.vim (1138 : 0)
390 autoload/vital/_5de2c28/Vim/Message.vim (390 : 0)
1824 autoload/vital/_5de2c28/Web/HTML.vim (1824 : 0)
13947 autoload/vital/_5de2c28/Web/HTTP.vim (13947 : 0)
1228 autoload/vital/_5de2c28/Web/JSON.vim (1228 : 0)
8746 autoload/vital/_5de2c28/Web/URI.vim (8746 : 0)
7866 autoload/vital/_5de2c28/Web/XML.vim (7866 : 0)
5013 autoload/vital/_b268d8d.vim (0 : 5013)
6788 autoload/vital/_b268d8d/Bitwise.vim (0 : 6788)
2710 autoload/vital/_b268d8d/Data/Base64.vim (0 : 2710)
357 autoload/vital/_b268d8d/Data/Collection.vim (0 : 357)
1280 autoload/vital/_b268d8d/Data/Dict.vim (0 : 1280)
5118 autoload/vital/_b268d8d/Data/LazyList.vim (0 : 5118)
7189 autoload/vital/_b268d8d/Data/List.vim (0 : 7189)
2387 autoload/vital/_b268d8d/Data/OrderedSet.vim (0 : 2387)
5712 autoload/vital/_b268d8d/Data/String.vim (0 : 5712)
1609 autoload/vital/_b268d8d/Data/Tree.vim (0 : 1609)
2661 autoload/vital/_b268d8d/Database/SQLite.vim (0 : 2661)
22024 autoload/vital/_b268d8d/DateTime.vim (0 : 22024)
2272 autoload/vital/_b268d8d/Experimental/Functor.vim (0 : 2272)
1249 autoload/vital/_b268d8d/Locale/Message.vim (0 : 1249)
4318 autoload/vital/_b268d8d/Mapping.vim (0 : 4318)
416 autoload/vital/_b268d8d/Math.vim (0 : 416)
11319 autoload/vital/_b268d8d/Prelude.vim (0 : 11319)
2712 autoload/vital/_b268d8d/Process.vim (0 : 2712)
2696 autoload/vital/_b268d8d/ProcessManager.vim (0 : 2696)
2255 autoload/vital/_b268d8d/System/Cache.vim (0 : 2255)
4268 autoload/vital/_b268d8d/System/File.vim (0 : 4268)
4608 autoload/vital/_b268d8d/System/Filepath.vim (0 : 4608)
1276 autoload/vital/_b268d8d/Text/LTSV.vim (0 : 1276)
2545 autoload/vital/_b268d8d/Text/Lexer.vim (0 : 2545)
1608 autoload/vital/_b268d8d/Text/Parser.vim (0 : 1608)
190 autoload/vital/_b268d8d/Vim/Buffer.vim (0 : 190)
5076 autoload/vital/_b268d8d/Vim/BufferManager.vim (0 : 5076)
1138 autoload/vital/_b268d8d/Vim/Compat.vim (0 : 1138)
1824 autoload/vital/_b268d8d/Web/HTML.vim (0 : 1824)
14026 autoload/vital/_b268d8d/Web/HTTP.vim (0 : 14026)
1228 autoload/vital/_b268d8d/Web/JSON.vim (0 : 1228)
7866 autoload/vital/_b268d8d/Web/XML.vim (0 : 7866)
5 autoload/vital/tweetvim.vital (5 : 5)
69 : e91c913d66201f2536c9e2e6d4b679ddd1755f42 | itchyny | Fri Oct 4 23:16:38 2013
69 autoload/tweetvim/buffer.vim (69 : 65)
101 : 47e5e976d9802e5ca7516c4bbb764c6d5353181e | itchyny | Fri Oct 4 21:41:24 2013
101 autoload/tweetvim/buffer.vim (101 : 0)
63 : 3d6cde8142ce3a6d6c585a8a1cb91cce270cb3a1 | itchyny | Fri Oct 4 01:56:06 2013
63 autoload/tweetvim/buffer.vim (63 : 46)
4 : e886a00da61ae78199f2ea611711529b52c0c547 | itchyny | Thu Oct 3 21:54:15 2013
4 autoload/tweetvim/buffer.vim (0 : 4)
172 : f7a3a3f6bf6f538ee1b0355bb7d9e83aa82e5a28 | itchyny | Thu Oct 3 21:53:17 2013
172 autoload/tweetvim/buffer.vim (165 : 172)
1096 : 95a9cdc766a41af20cbaa5e0ed8777db2644fbb7 | itchyny | Thu Oct 3 15:38:23 2013
922 autoload/tweetvim/buffer.vim (922 : 20)
108 doc/tweetvim.txt (108 : 0)
66 plugin/tweetvim.vim (66 : 0)
1 : 574bbec77622e776e75f370b03a5a70ce4913a03 | Masahiro Saito | Tue Aug 27 16:10:04 2013
1 README.markdown (1 : 1)
3 : d123a53b93e8fb8e3d939ffdd2919d4008749156 | basyura | Mon Aug 26 00:11:30 2013
3 autoload/tweetvim/action/around.vim (3 : 3)
1064 : 48bc47c80253c618698cd1f5563f42ebb2d97109 | basyura | Sun Aug 25 23:11:30 2013
1002 autoload/tweetvim/action/around.vim (1002 : 19)
62 autoload/tweetvim/action/reload.vim (62 : 0)
28 : bc6139d0287901b3483ea171dfb23be53020babe | basyura | Sat Aug 24 22:59:22 2013
28 autoload/tweetvim/action/around.vim (28 : 0)
230 : 36ce506859573bc432d3bbca6974ac5de26397cc | basyura | Sat Aug 24 20:38:28 2013
11 autoload/tweetvim.vim (11 : 11)
127 autoload/tweetvim/action/around.vim (127 : 8)
92 syntax/tweetvim.vim (92 : 0)
671 : 2ef94db2eb566859cc9e8c4ee351cf2b5c8ffa80 | basyura | Sat Aug 24 18:46:44 2013
671 autoload/tweetvim/action/around.vim (671 : 0)
730 : 60a5f83052836e470419f9bd68c58f0d7dd8f2fb | basyura | Wed Aug 21 20:15:39 2013
728 README.markdown (728 : 0)
1 autoload/tweetvim.vim (1 : 1)
1 doc/tweetvim.txt (1 : 1)
0 : b80578b32d31bb2a4875bff210df63f36f9a4285 | basyura | Wed Aug 21 20:11:34 2013
0 : 32880d12e85cc6caf322324cf57523412f4dc710 | basyura | Tue Aug 20 01:28:08 2013 -0700
3 : eae9658d156e1b482f9b9e7d824bc2e156b38ed7 | rhysd | Tue Aug 20 14:41:54 2013
3 autoload/tweetvim/util.vim (3 : 3)
672 : aa7e8d6809a61108a64588d870add8f51b275834 | basyura | Mon Aug 19 19:43:34 2013
401 autoload/tweetvim/util.vim (401 : 0)
160 doc/tweetvim.txt (160 : 0)
111 plugin/tweetvim.vim (111 : 0)
257235 : 8deb314d406ead75c6ffdd3c3329ca0de6c80fa1 | basyura | Mon Aug 19 18:56:52 2013
5013 autoload/vital/_b268d8d.vim (5013 : 0)
6788 autoload/vital/_b268d8d/Bitwise.vim (6788 : 0)
2710 autoload/vital/_b268d8d/Data/Base64.vim (2710 : 0)
357 autoload/vital/_b268d8d/Data/Collection.vim (357 : 0)
1280 autoload/vital/_b268d8d/Data/Dict.vim (1280 : 0)
5118 autoload/vital/_b268d8d/Data/LazyList.vim (5118 : 0)
7189 autoload/vital/_b268d8d/Data/List.vim (7189 : 0)
2387 autoload/vital/_b268d8d/Data/OrderedSet.vim (2387 : 0)
5712 autoload/vital/_b268d8d/Data/String.vim (5712 : 0)
1609 autoload/vital/_b268d8d/Data/Tree.vim (1609 : 0)
2661 autoload/vital/_b268d8d/Database/SQLite.vim (2661 : 0)
22024 autoload/vital/_b268d8d/DateTime.vim (22024 : 0)
2272 autoload/vital/_b268d8d/Experimental/Functor.vim (2272 : 0)
1249 autoload/vital/_b268d8d/Locale/Message.vim (1249 : 0)
4318 autoload/vital/_b268d8d/Mapping.vim (4318 : 0)
416 autoload/vital/_b268d8d/Math.vim (416 : 0)
11319 autoload/vital/_b268d8d/Prelude.vim (11319 : 0)
2712 autoload/vital/_b268d8d/Process.vim (2712 : 0)
2696 autoload/vital/_b268d8d/ProcessManager.vim (2696 : 0)
2255 autoload/vital/_b268d8d/System/Cache.vim (2255 : 0)
4268 autoload/vital/_b268d8d/System/File.vim (4268 : 0)
4608 autoload/vital/_b268d8d/System/Filepath.vim (4608 : 0)
1276 autoload/vital/_b268d8d/Text/LTSV.vim (1276 : 0)
2545 autoload/vital/_b268d8d/Text/Lexer.vim (2545 : 0)
1608 autoload/vital/_b268d8d/Text/Parser.vim (1608 : 0)
190 autoload/vital/_b268d8d/Vim/Buffer.vim (190 : 0)
5076 autoload/vital/_b268d8d/Vim/BufferManager.vim (5076 : 0)
1138 autoload/vital/_b268d8d/Vim/Compat.vim (1138 : 0)
1824 autoload/vital/_b268d8d/Web/HTML.vim (1824 : 0)
14026 autoload/vital/_b268d8d/Web/HTTP.vim (14026 : 0)
1228 autoload/vital/_b268d8d/Web/JSON.vim (1228 : 0)
7866 autoload/vital/_b268d8d/Web/XML.vim (7866 : 0)
4833 autoload/vital/_f6aedf7.vim (0 : 4833)
6788 autoload/vital/_f6aedf7/bitwise.vim (0 : 6788)
2710 autoload/vital/_f6aedf7/data/base64.vim (0 : 2710)
357 autoload/vital/_f6aedf7/data/collection.vim (0 : 357)
1280 autoload/vital/_f6aedf7/data/dict.vim (0 : 1280)
5592 autoload/vital/_f6aedf7/data/list.vim (0 : 5592)
2387 autoload/vital/_f6aedf7/data/ordered_set.vim (0 : 2387)
5956 autoload/vital/_f6aedf7/data/string.vim (0 : 5956)
1609 autoload/vital/_f6aedf7/data/tree.vim (0 : 1609)
21965 autoload/vital/_f6aedf7/date_time.vim (0 : 21965)
2272 autoload/vital/_f6aedf7/experimental/functor.vim (0 : 2272)
1249 autoload/vital/_f6aedf7/locale/message.vim (0 : 1249)
4318 autoload/vital/_f6aedf7/mapping.vim (0 : 4318)
279 autoload/vital/_f6aedf7/math.vim (0 : 279)
9891 autoload/vital/_f6aedf7/prelude.vim (0 : 9891)
3290 autoload/vital/_f6aedf7/process.vim (0 : 3290)
2358 autoload/vital/_f6aedf7/system/cache.vim (0 : 2358)
4487 autoload/vital/_f6aedf7/system/file.vim (0 : 4487)
4607 autoload/vital/_f6aedf7/system/filepath.vim (0 : 4607)
2499 autoload/vital/_f6aedf7/text/lexer.vim (0 : 2499)
1276 autoload/vital/_f6aedf7/text/ltsv.vim (0 : 1276)
5016 autoload/vital/_f6aedf7/vim/buffer/manager.vim (0 : 5016)
4782 autoload/vital/_f6aedf7/vim/buffer_manager.vim (0 : 4782)
1138 autoload/vital/_f6aedf7/vim/compat.vim (0 : 1138)
1824 autoload/vital/_f6aedf7/web/html.vim (0 : 1824)
9635 autoload/vital/_f6aedf7/web/http.vim (0 : 9635)
1228 autoload/vital/_f6aedf7/web/json.vim (0 : 1228)
7866 autoload/vital/_f6aedf7/web/xml.vim (0 : 7866)
5 autoload/vital/tweetvim.vital (5 : 5)
326 : e33ec893499bfa840f5d6bb30b4f37db1094f322 | basyura | Mon Aug 12 14:25:58 2013
314 autoload/tweetvim/account.vim (314 : 256)
6 autoload/tweetvim/complete.vim (6 : 0)
6 autoload/unite/sources/tweetvim_timeline.vim (6 : 0)
0 : 53186547fda4a264f11cffa861a8f768d52eeca3 | basyura | Sun Aug 11 17:27:29 2013
300 : e322d01482be911c0ed7ff5d206aed767d510b96 | alpaca_taichou | Sun Aug 11 01:19:18 2013
300 plugin/tweetvim.vim (83 : 300)
35 : 5b0bf64cc457c0e5cf24fb2b4aaf1be90eaa65b3 | basyura | Tue Aug 6 08:45:10 2013
35 autoload/tweetvim/buffer.vim (35 : 0)
0 : 53d050c0db7a15191e1e962fd5ea7ffe6ab0e891 | basyura | Fri Aug 2 00:55:05 2013 -0700
14 : fc3e3e6b111ffb7619bc3ff690c85e2a783bc60f | rhysd | Fri Aug 2 14:30:54 2013
14 autoload/tweetvim.vim (14 : 2)
2 : 2f75fb04067f515dc5e0292082df210f98122b09 | basyura | Tue Jul 30 22:42:50 2013
2 plugin/tweetvim.vim (2 : 1)
83 : 879c7291b28558a7bf928439d0c585662803bf5d | basyura | Thu Jul 25 00:11:21 2013
83 autoload/tweetvim/action/reload.vim (83 : 0)
0 : 388ac9e64640f3ea2c26b85ca8db7aaf89a9ce41 | basyura | Sat Jul 20 01:03:02 2013 -0700
31 : 028ca70740ac0ca302c52cbb1f19eb8f4bbb5f38 | Shohei Fujii | Sat Jul 20 15:12:07 2013
31 autoload/tweetvim.vim (31 : 0)
91 : 908316ee8751c0a83c23ce8a6c6ad7bef13c5ea3 | basyura | Mon Jul 15 23:14:08 2013
91 autoload/tweetvim/buffer.vim (91 : 0)
5 : 1e56f6082c993c15942492579d0f32cd1a84cf59 | basyura | Mon Jul 15 22:20:38 2013
5 autoload/tweetvim/buffer.vim (2 : 5)
1095 : 189532cbe993f0eeb501fc3dbe2959b074866119 | basyura | Mon Jul 15 20:20:48 2013
361 autoload/tweetvim/action/buffer_previous_stream.vim (361 : 0)
612 autoload/tweetvim/buffer.vim (612 : 0)
122 plugin/tweetvim.vim (122 : 0)
78 : 5e8afbc87b8f566a7801bff86d15f44b548e85c1 | basyura | Sat Jul 13 21:51:01 2013
78 autoload/tweetvim/buffer.vim (78 : 0)
50 : d25d2e2c8aeb45d609c4220dd2175532b476beb7 | basyura | Wed Jul 10 22:21:00 2013
50 autoload/tweetvim/action/reply_to_all.vim (0 : 50)
0 : 57556c2d908aa0997bfb1c3b030e2236c0fe3ef6 | basyura | Wed Jul 10 21:49:02 2013
52 : 6a12e362ec3a1cfdbde308254c53b68881b8790b | Shohei Fujii | Mon Jul 8 21:54:42 2013
52 autoload/tweetvim/action/reply_to_all.vim (52 : 0)
172 : 6a898fa26ef120102714e18f6c34bf7b9e4960e5 | Shohei Fujii | Mon Jul 8 21:46:22 2013
67 autoload/tweetvim/buffer.vim (67 : 0)
105 plugin/tweetvim.vim (105 : 0)
699 : 1f70b53ba1a18a32ca03243f216e2f5da972bb4a | Shohei Fujii | Mon Jul 8 21:09:01 2013
699 autoload/tweetvim/action/reply_to_all.vim (699 : 0)
289 : dafba5044fa07ba35f1c4a2dff25e168c3f4f3b8 | basyura | Fri Jul 5 22:34:28 2013
289 autoload/tweetvim/buffer.vim (289 : 2)
0 : a656628e94f3171414ecc33737518257a55cbbe8 | basyura | Fri Jul 5 22:12:17 2013
576 : ee94ab38cc62bcd2e29e515d151d405bd56f31f0 | Shohei Fujii | Thu Jul 4 18:57:43 2013
186 autoload/tweetvim.vim (186 : 0)
390 autoload/tweetvim/buffer.vim (390 : 0)
2 : 99ce8485d93467176cbbda97c5705711da915485 | basyura | Sun Jun 30 10:42:07 2013
2 plugin/tweetvim.vim (1 : 2)
0 : 9df368ccfc432958b624a8005446168fbe0b6721 | basyura | Sat Jun 29 14:50:55 2013
25 : d420337adaba8f5279c0c0fa8283b5f978f3df62 | rhysd | Sat Jun 29 14:05:24 2013
25 autoload/tweetvim.vim (25 : 0)
108 : ceb68842672ccb9ff5efcbdd97484135fcc1d690 | basyura | Tue Jun 25 23:47:19 2013
108 autoload/tweetvim/buffer.vim (108 : 0)
214 : 36bcd3c9201ff560fc8c0b93d067432f0c0f3a5b | basyura | Mon Jun 24 10:15:40 2013
214 README.markdown (214 : 0)
26 : d1b015218db8cf28090cc0293ef75574b96ba6a6 | basyura | Mon Jun 24 10:15:31 2013
25 autoload/tweetvim.vim (25 : 0)
1 autoload/tweetvim/buffer.vim (1 : 0)
162 : 2ec80bd9138cd75fc7b1c980d330995d23ad6a02 | basyura | Wed Jun 19 12:50:25 2013
162 autoload/tweetvim.vim (162 : 48)
96 : 58cbbdc0ddedf1853fb9355d5b743d148dcde17d | basyura | Sun Jun 16 20:54:07 2013
28 autoload/tweetvim.vim (28 : 2)
68 plugin/tweetvim.vim (68 : 0)
70 : 629d2ea700277141d058e883b68b7e5250491be7 | basyura | Sun Jun 16 20:53:54 2013
70 autoload/tweetvim.vim (70 : 1)
355 : 9a739dd9f4f3558d461bd8b95adda0d5bce8b9ee | basyura | Fri Jun 14 21:44:20 2013
355 autoload/tweetvim.vim (355 : 1)
1 : 4d8391ce411fb729807421cd91098c7866696849 | basyura | Mon Jun 10 22:03:55 2013
1 autoload/tweetvim.vim (1 : 1)
28 : 81f764310cd2043a486b63129a6b4ae707e6cff0 | basyura | Sun Jun 9 21:58:07 2013
28 autoload/tweetvim.vim (0 : 28)
493 : af0116765ec26691ca910802b868f86ccdf980c0 | basyura | Sun Jun 9 21:47:03 2013
493 autoload/tweetvim.vim (493 : 266)
224 : 161cf45cddfd17c4cd84fd075775b7b7271535af | basyura | Sun Jun 9 17:55:25 2013
224 autoload/tweetvim/buffer.vim (224 : 31)
1021 : 3176ca89e023eb699c43948bf609edcda9d09b74 | basyura | Sun Jun 9 16:53:58 2013
505 autoload/tweetvim.vim (121 : 505)
516 autoload/tweetvim/util.vim (516 : 0)
200 : 7a10ee1e378d21be71f018b7c659920f0c617b4c | basyura | Sun Jun 9 16:23:36 2013
142 autoload/tweetvim.vim (142 : 0)
58 autoload/tweetvim/buffer.vim (58 : 0)
277 : 8aede7532fec47e7c75da748b5d6156e4ce899f9 | basyura | Sun Jun 9 13:09:35 2013
270 autoload/tweetvim/buffer.vim (270 : 111)
7 syntax/tweetvim.vim (7 : 5)
79 : bd329433328eb13ec19d9f354aa83c4ba4232af9 | basyura | Sat Jun 8 14:34:34 2013
4 autoload/tweetvim.vim (4 : 3)
75 plugin/tweetvim.vim (5 : 75)
0 : e094926045395aaeb19829dfa62812f58e9d4f9a | basyura | Sat Jun 8 08:30:42 2013
2 : dfcd3d01c99f9e9c6a01556d9fafff51b5aa9e0b | basyura | Fri Jun 7 21:30:39 2013
2 autoload/tweetvim.vim (2 : 2)
792 : 755d38e009b1fc5bb1bc1112edc26c3adced8b47 | basyura | Fri Jun 7 21:30:00 2013
792 doc/tweetvim.txt (792 : 1)
110 : 273f564112d17ec427654ed6859392482a158e9b | basyura | Tue Jun 4 21:41:14 2013
110 autoload/tweetvim/buffer.vim (110 : 0)
251 : 3b977aacb017113c5f7abb291736f580241f6273 | basyura | Tue Jun 4 16:06:11 2013
215 autoload/tweetvim/action/cursor_down.vim (215 : 13)
36 autoload/tweetvim/action/cursor_up.vim (36 : 2)
268 : e53111cd3ad0c3149ad487ea110583ce390956e5 | basyura | Mon Jun 3 22:36:27 2013
59 autoload/tweetvim/buffer.vim (59 : 1)
59 autoload/tweetvim/say.vim (59 : 0)
150 plugin/tweetvim.vim (150 : 0)
32 : 512c65e56f4cc55a65608c7fa0c9c87d9ac242d3 | basyura | Mon Jun 3 21:42:44 2013
32 autoload/tweetvim/buffer.vim (2 : 32)
254 : 4880290114e50f43dfa5cf290df6b0be65b4cbfd | basyura | Mon Jun 3 19:53:46 2013
192 autoload/tweetvim/buffer.vim (192 : 11)
62 plugin/tweetvim.vim (62 : 0)
20 : 835f0ea9c42c670721d8d897348a3ca7916da970 | basyura | Mon Jun 3 08:55:00 2013
10 autoload/tweetvim.vim (10 : 0)
10 autoload/tweetvim/buffer.vim (10 : 0)
0 : d1b29c7eaab6c434c7a8277e443183725e4ffd79 | basyura | Sun Jun 2 13:19:34 2013
96 : f8e91d99e992b6b8d2e471c9aceec2f53cae6d84 | basyura | Sun Jun 2 10:09:29 2013
96 autoload/tweetvim.vim (96 : 0)
31 : bf48354c45a335d7bfc2f1796e3023a520931a79 | basyura | Sun Jun 2 00:33:52 2013
27 autoload/tweetvim.vim (27 : 0)
4 autoload/tweetvim/buffer.vim (4 : 0)
30 : 56045fbc3139d6a41fa74145424c559d4e89e460 | basyura | Sun Jun 2 00:21:26 2013
30 autoload/tweetvim.vim (30 : 0)
459 : 76e585b7d07eeaf421f0e7f3800aff6c20db4fef | basyura | Sun Jun 2 00:17:38 2013
427 autoload/tweetvim.vim (427 : 0)
15 autoload/tweetvim/buffer.vim (15 : 9)
17 plugin/tweetvim.vim (17 : 0)
54 : 6c43f5871d502c24fb8dbbb4eb286466a6a9333d | basyura | Sat Jun 1 18:07:33 2013
54 autoload/tweetvim.vim (54 : 2)
28 : baffd325abaa02b79c3e31e4a41a814283972cb7 | basyura | Sat Jun 1 17:48:57 2013
28 autoload/tweetvim.vim (28 : 0)
6 : 35ffe2866951539a472bea29f46dcb070f2be8a7 | basyura | Sat Jun 1 17:41:56 2013
6 autoload/tweetvim.vim (6 : 4)
223 : b18c84fea3401019724362a468073eee747305a6 | basyura | Sat Jun 1 16:24:21 2013
223 autoload/tweetvim/buffer.vim (223 : 61)
311 : 5a94f55c1603561bc9c5b1b06127ddb7e67eda41 | basyura | Sat Jun 1 15:27:52 2013
222 autoload/tweetvim.vim (222 : 13)
89 autoload/tweetvim/buffer.vim (89 : 1)
201 : 2502e228c5ae36bd29a5637a2b6298ca214443ea | basyura | Sat Jun 1 15:08:15 2013
201 autoload/tweetvim/buffer.vim (201 : 0)
2 : ea5bd9f882c1b6583d1fd2b60c202a05b324ca5f | basyura | Sat Jun 1 13:44:03 2013
2 autoload/tweetvim.vim (2 : 2)
127 : af84f6ab7b2ec3c3e85ed3f5b29207f0b629f5d8 | basyura | Sat Jun 1 13:41:39 2013
127 autoload/tweetvim.vim (127 : 0)
994 : d6919e13db1e4526eee01f8b76041bf3cea62c03 | basyura | Sat Jun 1 13:00:37 2013
874 autoload/tweetvim.vim (874 : 89)
120 autoload/tweetvim/buffer.vim (120 : 31)
20 : b72932ffc1cca657d55a2f63626f12a0115a1a22 | basyura | Fri May 31 22:12:26 2013
20 autoload/tweetvim/say.vim (20 : 0)
342 : b49a3d790af20634976f6174c5215dfbcfd172aa | basyura | Fri May 31 15:04:08 2013
278 autoload/tweetvim.vim (278 : 0)
64 plugin/tweetvim.vim (64 : 0)
42 : 4e5ea018cb749043eabd6dc437376fd0c53bda62 | basyura | Fri May 31 14:49:55 2013
42 autoload/unite/sources/tweetvim_switch_account.vim (42 : 0)
165 : 14ad026f1bb20772f0b6c0e0f07945383c86185f | basyura | Fri May 31 14:43:37 2013
165 autoload/tweetvim.vim (165 : 9)
85 : b59b383b84ef1f6d5b33c165d8f58d8a6315aba8 | basyura | Fri May 31 13:14:20 2013
85 autoload/tweetvim.vim (85 : 0)
282 : cb36ad9215ab41f71868e5e382e1f56c2e8e27a3 | basyura | Fri May 31 12:56:31 2013
282 autoload/tweetvim/buffer.vim (282 : 0)
348 : b5d22239afc4927050f0a2c40bcbb2c83fde841c | basyura | Fri May 31 12:34:27 2013
2 autoload/tweetvim.vim (2 : 2)
346 autoload/tweetvim/buffer.vim (346 : 251)
582 : 384c2603b43fc3952838ce6e1c84582224226a80 | basyura | Fri May 31 11:27:38 2013
158 autoload/tweetvim.vim (158 : 158)結構それっぽく出てる。vital の更新はさすがにでかい。
気が向いたらユーザとか日付指定で出せるようにしてみる。