簡體   English   中英

同步到特定日期/時間范圍內的所有CL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM