有時,我發現自己希望搜索Perforce中變更列表描述的文本。在P4V中似乎沒有辦法做到這一點。我可以通過更改命令的輸出重定向到一個文件做...如何搜索Perforce中變更列表描述的文本?
p4 changes -l > p4changes.txt
...(-l開關告訴它傾倒變更列表說明的全文),然後搜索文件,但這很麻煩。有沒有人找到更好的方法?
有時,我發現自己希望搜索Perforce中變更列表描述的文本。在P4V中似乎沒有辦法做到這一點。我可以通過更改命令的輸出重定向到一個文件做...如何搜索Perforce中變更列表描述的文本?
p4 changes -l > p4changes.txt
...(-l開關告訴它傾倒變更列表說明的全文),然後搜索文件,但這很麻煩。有沒有人找到更好的方法?
當提交的更改列表窗格具有焦點時,CTRL + F允許您執行任意文本搜索,其中包含更改列表說明。
唯一的限制是它只搜索已從服務器獲取的更改列表,因此您可能需要提取檢索的數字。這可以通過導航到編輯 - >首選項 - >服務器數據找到的「更改列表,作業,分支映射或標籤一次獲取」的設置完成。
我使用p4sql並對「更改」數據庫運行查詢。下面是perforce database schema
查詢看起來是這樣的(未經測試)
select change from changes where description like '%text%' and p4options = 'longdesc'
編輯:添加p4options在說明書中返回超過31個字符。
這沒有奏效。出於某種原因,「like」的行爲如同「=」。假設描述是「foo bar」。像'富'失敗,但像'富酒吧'成功。更重要的是,他們不會使整個描述文本可用,只有前30個字符。 – raven 2008-09-25 17:52:54
@raven - %字符對於SQL很重要,並且可以使查詢工作。我也不認爲你在描述中是正確的 - 你應該能夠完全瞭解它。你能發佈你的查詢嗎? – 2008-09-25 19:01:22
@Greg Whitfield:你說得對,我沒有使用%字符。查詢正在工作,但沒有多大用處。我證實它只是查詢和顯示描述的前31個字符。 – raven 2008-09-26 18:47:11
使用p4sql真的是有效地做你想要的唯一方法。我不知道有任何其他方式。當然好處是您可以使用select語句來限制更改列表值的範圍(通過日期,用戶等)。你的方法會起作用,但是當你生成更多的變更表時,它會很快變得麻煩。您可以限制更改命令的範圍,但不會獲得p4sql的靈活性。
如果你還愛你的命令行,你可以寫一個小的Perl腳本:
用法可能類似於'p4 -ztag changes -l | yourperlfilter.pl searchterm1 searchterm2'
如果工作正常,你可以integrate it into the p4win tools menu。
埃迪奧運會上張貼了他的Perforce公司變更列表搜索0.1在http://www.eddiescholtz.com/blog/archives/130
但是,我不喜歡用我喜歡的文本編輯器的簡單: P4變化-s提交// PROG /材料/主/ ... > TEMP.TXT
p4 changes -L | grep -B 3 searchstring
-B 3
方式顯示匹配的字符串前3行,應該足以顯示2個註釋的改變ID,但您可以根據需要改變它。
這是Paul的「grep」答案的Powershell版本。再次,它搜索的變化說明中指定的字符串,並返回之前的3條線路,包括改變ID:
p4 changes -L | select-string "search string" -Context (3,0)
爲什麼重定向到一個文件時,你可以管通過less
輸出,並使用less
「搜索?
p4 changes -l | less
然後按/提示輸入搜索字符串。之後,n將跳轉到下一個匹配,並且轉換 + n將跳轉到上一個。
對於Windows的less
的實現可作爲UnxUtils的一部分。
真正的解決方案是讓p4d在更改列表描述(以及源文件本身....)上有一個全文索引。還有一些奇怪的東西尚未進入產品中。 – Jonesome 2016-08-19 17:53:55