2010-12-10 141 views
10

我怎樣才能看到全部我在特定日期做的svn日誌?在特定日期獲取用戶活動的svn日誌

我已經在網上搜索了這個,但一直沒有找到解決辦法。

+0

如果你在Windows上,TortoiseSVN的,您可以通過過濾其日誌輸出(除其他事項外)的用戶名。如果你使用的是Unix,我毫不懷疑有一種方法可以編寫一個腳本,用於在'svn log -revision {startdate}:{enddate}中爲每個版本號執行'svn log -rNNNNN'。 grep ajitam',儘管我在shell腳本方面做得太弱了。 – sbi 2010-12-10 09:16:53

回答

19

要顯示在第10名的條目:

svn log -r '{2010-12-10}:{2010-12-11}'|sed -n '1p; 2,/^-/d; /username/,/^-/p' 

的SVN命令獲取提交在該日期範圍

擊穿sed命令的:

  • -n - 不要自動打印。
  • 1p - 打印第一行(---標題)。
  • 2,/^-/d; - 刪除從第二個到結束---標題的所有內容。這刪除了第一個條目,IIRC是在一天開始時的午夜時分的最近一次提交(即,它實際上不在該範圍內,並且可能在過去很長)。
  • /username/,/^-/p - 打印一切從用戶名開始(一個正則表達式匹配你感興趣的用戶)收盤---頭部(這個動作反覆)
+1

@pyfunc它爲我工作。 'grep'的問題在於你只能得到每個日誌的第一行 – ajitam 2010-12-10 09:48:16

+1

誰對此投了票?有用。我知道,因爲我(發佈前)和ajitam都對它進行了測試。它可能需要GNU sed。 – 2010-12-10 09:50:06

+0

@ajitam:沒關係。我的理解是基於你提供的。我相信你不想要一個餅乾切割機解決方案。由於你沒有提供任何細節。我知道你正在尋找在特定日期提交。這是我提供的。從那裏建立就足夠了。請參閱AgentConundrum的答案。在提供部分答案時,我得到兩個否定的選票。非常有趣。 Matthew Flaschen的回答甚至不適合我。所以我想grep和休息需要專門建立。 AgentConundrum的答案更爲通用,符合我的建議。 – pyfunc 2010-12-10 09:53:27

4

假設你是一個Linux系統上,你可以做這樣的事情:

svn log -r {YYYY-MM-DD}:{YYYY-MM-DD} | grep username | cut -d " " -f 1 | tail -n +2 | while read revision; do svn log -r $revision; done

這是什麼東西做的是使用svn日誌來獲得所有日誌某一天,然後切割輸出,使得它僅僅是一個版本號的列表。 [編輯:添加tail -n +2以截斷第一次修訂 - 正如@Matthew所述,第一行將是{that_day}之前的最新修訂版] while循環然後遍歷修訂號的每一行,並將其傳遞到svn log。另外,請記住{YYYY-MM-DD}指的是當天的開始的午夜,因此要運行一整天,您應該運行它以獲得{that_day}:{the_following_day}

希望有幫助!

(另外,抱歉的混亂提早了--username。我以前從來沒有使用它,因爲我的本地的svn只有一個用戶(我),它看上去它的工作,當它真不是。)

+0

不幸的是,這與pyfunc的答案有相同的日期問題。它包含* *之前的提交*'that_day'。而且,這樣做效率不高,因爲每次調用svn日誌都需要一個進程,一個網絡連接以及一個可能的密碼提示。 – 2010-12-10 09:57:29

+0

@Matthew:感謝您指出「最後一次提交」問題。我更新了我的解決方案。你絕對正確的認爲,這會吸引網絡或者使用未緩存的憑證。 – AgentConundrum 2010-12-10 10:08:12

+0

@Agent,+1,感謝您的更新。你說得對,儘管存在性能問題,但它更具可讀性(尤其是如果你不熟悉sed)。 – 2010-12-10 10:13:52

0

如果你在Linux上的最佳解決方案,讓整個日期的日誌如下:

svn log -r {start date}:{end date} -v | sed -n ‘/username/,/—–$/ p’ 

如果您想要的用戶名的基礎上,指定日期範圍內,然後與檢索SVN日誌你需要使用svn log -r {startDate}:{endDate}這是管道sed用戶命令我。

1
svn log --verbose --search user_name --revision {YYYY-MM-DD}:{YYYY-MM-DD} 

任何平臺