[英]Sync to all CLs within a certain Date/Time range
我的文檔和Google-fu在這個問題上嚴重失敗了,所以:
如何使用P4API的GetChangelist()函數同步一系列文件(即@now到@twoDaysAgo的所有文件)? 我可以很容易地構造命令行來執行此操作:
p4 changes -s submitted //...@2016/12/01,2016/12/06
但API希望我通過服務器與服務器連接
GetChangelist(Options options, FileSpec[] files)
令我瘋狂的是,我必須構建一個Options和Filespecs []的組合來代替請求,而(AFAIK)不能只傳遞實際的命令行字符串。 特別是因為所有文檔似乎都不存在。
有人可以告訴我什么樣的filespec參數我必須傳遞? (我認為這是我需要用來指定我想在一定時間內獲得一系列所有CL的事實?)謝謝!
(順便說一下:我很驚訝沒有“P4API”標簽,我也無法創建一個。)
好吧,一對夫婦更小時的挖掘后,我發現有一種方法,以實際的命令行參數輸送給命令。 您創建了一個DepotSpec,然后像這樣的東西限制了從服務器檢索的CL的時間范圍:
ChangesCmdOptions changeListOptions = new ChangesCmdOptions(ChangesCmdFlags.FullDescription|ChangesCmdFlags.IncludeTime, null, 0, ChangeListStatus.None, null);
FileSpec[] fileSpecs = new FileSpec[1] { new FileSpec(new DepotPath("//depot/...@2016/12/05 21:57:30,@now"), null, null, null) };
IList<Changelist> changes = m_Repository.GetChangelists(changeListOptions, fileSpecs);
對於那些曾經使用API一段時間的人來說,所有這些可能都是“放縱的笑容”。 當這篇文章中提到的兩個頁面(“FileSpec對象文檔”,“SyncFiles方法文檔”)等文檔現在處於脫機狀態時,對新手來說有點混亂: Perforce Api - 如何命令“獲取修訂[changelist number]”
這里是您真正想要使用的非命令行版本,來自Perforce文檔(一旦找到它:))
PathSpec path = new DepotPath("//depot/...");
DateTimeVersion lowerTimeStamp = new DateTimeVersion(new DateTime(2016,12,06));
DateTimeVersion upperTimeStamp = new DateTimeVersion(DateTime.Now);
VersionSpec version = new VersionRange(lowerTimeStamp, upperTimeStamp);
FileSpec[] fileSpecs = { new FileSpec(path, version) };
ChangesCmdOptions changeListOptions = new ChangesCmdOptions(ChangesCmdFlags.FullDescription | ChangesCmdFlags.IncludeTime, null, 0, ChangeListStatus.None, null);
IList<Changelist> changes = m_Repository.GetChangelists(changeListOptions, fileSpecs);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.