public void TestHasBinaryProp() { SvnSandBox sbox = new SvnSandBox(this); sbox.Create(SandBoxRepository.AnkhSvnCases); string WcPath = sbox.Wc; SvnWorkingCopyState state; SvnWorkingCopyStateArgs a = new SvnWorkingCopyStateArgs(); a.RetrieveFileData = true; SvnWorkingCopyClient wcc = new SvnWorkingCopyClient(); wcc.GetState(Path.Combine(WcPath, "Form.cs"), out state); // first on a file Assert.That(state.IsTextFile); wcc.GetState(Path.Combine(WcPath, "App.ico"), out state); Assert.That(state.IsTextFile, Is.False); wcc.GetState(WcPath, out state); // check what happens for a dir //Assert.IsFalse(state.IsTextFile); }
void UpdateTextFile() { SvnItemState value = SvnItemState.IsDiskFile | SvnItemState.Versioned; SvnItemState v; bool isTextFile; if (TryGetState(SvnItemState.Versioned, out v) && (v == 0)) { isTextFile = false; } else if (GetState(value) != value) { isTextFile = false; } else { using (SvnWorkingCopyClient client = _context.GetService <ISvnClientPool>().GetWcClient()) { SvnWorkingCopyStateArgs a = new SvnWorkingCopyStateArgs(); a.ThrowOnError = false; a.RetrieveFileData = true; SvnWorkingCopyState state; if (client.GetState(FullPath, out state)) { isTextFile = state.IsTextFile; } else { isTextFile = false; } } } if (isTextFile) { SetState(SvnItemState.IsTextFile, SvnItemState.None); } else { SetState(SvnItemState.None, SvnItemState.IsTextFile); } }
public void List_ListDetails() { SvnSandBox sbox = new SvnSandBox(this); sbox.Create(SandBoxRepository.Default); string WcPath = sbox.Wc; Uri WcUri = sbox.Uri; using (SvnClient client = NewSvnClient(true, false)) { string oneFile = Path.Combine(WcPath, "LocalFileForTestList"); TouchFile(oneFile); client.Add(oneFile); SvnCommitResult ci; client.Commit(WcPath, out ci); SvnUpdateResult r; client.Update(WcPath, out r); Assert.That(r, Is.Not.Null); Assert.That(r.HasRevision); Assert.That(r.HasResultMap); Assert.That(r.Revision, Is.EqualTo(ci.Revision)); bool visited = false; SvnListArgs a = new SvnListArgs(); a.RetrieveEntries = SvnDirEntryItems.AllFieldsV15; client.List(new SvnPathTarget(WcPath), a, delegate(object sender, SvnListEventArgs e) { Assert.That(e.Entry, Is.Not.Null, "Entry set"); Assert.That(e.RepositoryRoot, Is.Null, "Only valid when listing a Uri"); if (e.Path == "LocalFileForTestList") { Assert.That(e.BasePath, Is.EqualTo("/trunk"), "Basepath"); Assert.That(e.Lock, Is.Null); Assert.That(e.Entry.Author, Is.EqualTo(Environment.UserName)); Assert.That(e.Entry.FileSize, Is.EqualTo(0)); Assert.That(e.Entry.NodeKind, Is.EqualTo(SvnNodeKind.File)); Assert.That(e.Entry.Revision, Is.EqualTo(ci.Revision)); Assert.That(e.Entry.Time, Is.GreaterThan(DateTime.UtcNow - new TimeSpan(0, 5, 0))); visited = true; } }); Assert.That(visited, Is.True, "Visited is true"); visited = false; client.List(WcUri, a, delegate(object sender, SvnListEventArgs e) { Assert.That(e.Entry, Is.Not.Null, "Entry set"); if (e.Path == "LocalFileForTestList") { Assert.That(e.BasePath, Is.EqualTo("/trunk"), "Basepath"); Assert.That(e.Lock, Is.Null); Assert.That(e.Entry.Author, Is.EqualTo(Environment.UserName)); Assert.That(e.Entry.FileSize, Is.EqualTo(0)); Assert.That(e.Entry.NodeKind, Is.EqualTo(SvnNodeKind.File)); Assert.That(e.Entry.Revision, Is.EqualTo(ci.Revision)); Assert.That(e.Entry.Time, Is.GreaterThan(DateTime.UtcNow - new TimeSpan(0, 5, 0))); visited = true; } }); Assert.That(visited, Is.True, "Visited is true"); SvnWorkingCopyClient wcC = new SvnWorkingCopyClient(); SvnWorkingCopyState state; Assert.That(wcC.GetState(oneFile, out state)); Assert.That(state, Is.Not.Null); Assert.That(state.IsTextFile, Is.True); client.SetProperty(oneFile, "svn:mime-type", "application/binary"); Assert.That(wcC.GetState(oneFile, out state)); Assert.That(state, Is.Not.Null); Assert.That(state.IsTextFile, Is.False); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { lbInfo.Content = "一切正常"; String curDir = Directory.GetCurrentDirectory(); String curExe = System.Reflection.Assembly.GetExecutingAssembly().Location; SvnClient = new SvnClient(); SvnTarget svnTargetCurDir = SvnTarget.FromString(curDir); SvnTarget snvTargetCurExe = SvnTarget.FromString(curExe); // 未使用 - 获取目录下的文件状态 Collection<SvnStatusEventArgs> svnStatusEventArgsCollection; SvnClient.GetStatus(Directory.GetCurrentDirectory(), out svnStatusEventArgsCollection); // 未使用 - 空的 Collection<SvnPropertyListEventArgs> svnPropertyListEventArgsCollection; SvnClient.GetPropertyList(Directory.GetCurrentDirectory(), out svnPropertyListEventArgsCollection); // 未使用 - 获取一个文件的状态 Collection<SvnFileVersionEventArgs> svnFileVersionEventArgsCollection; try { SvnClient.GetFileVersions(snvTargetCurExe, out svnFileVersionEventArgsCollection); } catch(SvnWorkingCopyPathNotFoundException ex) { // 如果查询的文件未加入Repo,会抛此异常 } // 未使用 - 一个好像没什么用的信息列表,目录是第一个项,没有版本号 Collection<SvnListEventArgs> svnListEventArgsCollection; SvnClient.GetList(svnTargetCurDir, out svnListEventArgsCollection); // 未使用 - 工作目录全路径 String workingCopyRoot = SvnClient.GetWorkingCopyRoot(Directory.GetCurrentDirectory()); // 未使用 - 整个仓库的最新版本 long revision = 0; SvnClient.Youngest(Directory.GetCurrentDirectory(), out revision); // 此目录的相关变更 和 GUI中的ShowLog一样 是此目录的相关变更 Collection<SvnLogEventArgs> logList; try { SvnClient.GetLog(Directory.GetCurrentDirectory(), out logList); } catch(SvnInvalidNodeKindException ex) { lbInfo.Content = "当前目录不是SVN目录,停用更新检查功能"; btnUpdateAndLaunch.Visibility = Visibility.Hidden; return; } // 获取本地目录信息,当前版本和修改版本都是本地的 SvnInfoEventArgs svnInfoEventArgs; SvnClient.GetInfo(svnTargetCurDir, out svnInfoEventArgs); long curRevision = svnInfoEventArgs.Revision; // 当前的SVN版本 long changeRevision = logList[0].Revision; // 当前目录的最新远程变更版本 lbVersionChange.Content = changeRevision; lbVersionCur.Content = svnInfoEventArgs.Revision; if (curRevision < changeRevision) { btnUpdateAndLaunch.Visibility = Visibility.Visible; lbInfo.Content = "发现新版本"; } else { btnUpdateAndLaunch.Visibility = Visibility.Hidden; lbInfo.Content = "已经是最新版"; } // -------------------------------------------------------- // SvnWorkingCopyClient // -------------------------------------------------------- SvnWorkingCopyClient svnWorkingCopyClient = new SvnWorkingCopyClient(); // 未使用 只有一个值IsText 没看出有什么用处 SvnWorkingCopyState svnWorkingCopyState; svnWorkingCopyClient.GetState(Directory.GetCurrentDirectory(), out svnWorkingCopyState); // 未使用 返回仅本地存在的所有修改版本 SvnWorkingCopyVersion svnWorkingCopyVersion; svnWorkingCopyClient.GetVersion(curDir, out svnWorkingCopyVersion); // -------------------------------------------------------- // SvnTools // -------------------------------------------------------- // 未使用 传入正确的目录却返回false???? bool isCurDirInWorkingCopy = SvnTools.IsManagedPath(curDir); }
public void List_ListDetails() { SvnSandBox sbox = new SvnSandBox(this); sbox.Create(SandBoxRepository.Default); string WcPath = sbox.Wc; Uri WcUri = sbox.Uri; using (SvnClient client = NewSvnClient(true, false)) { string oneFile = Path.Combine(WcPath, "LocalFileForTestList"); TouchFile(oneFile); client.Add(oneFile); SvnCommitResult ci; client.Commit(WcPath, out ci); SvnUpdateResult r; client.Update(WcPath, out r); Assert.That(r, Is.Not.Null); Assert.That(r.HasRevision); Assert.That(r.HasResultMap); Assert.That(r.Revision, Is.EqualTo(ci.Revision)); bool visited = false; SvnListArgs a = new SvnListArgs(); a.RetrieveEntries = SvnDirEntryItems.AllFieldsV15; client.List(new SvnPathTarget(WcPath), a, delegate(object sender, SvnListEventArgs e) { Assert.That(e.Entry, Is.Not.Null, "Entry set"); Assert.That(e.RepositoryRoot, Is.Null, "Only valid when listing a Uri"); if (e.Path == "LocalFileForTestList") { Assert.That(e.BasePath, Is.EqualTo("/trunk"), "Basepath"); Assert.That(e.Lock, Is.Null); Assert.That(e.Entry.Author, Is.EqualTo(Environment.UserName)); Assert.That(e.Entry.FileSize, Is.EqualTo(0)); Assert.That(e.Entry.NodeKind, Is.EqualTo(SvnNodeKind.File)); Assert.That(e.Entry.Revision, Is.EqualTo(ci.Revision)); Assert.That(e.Entry.Time, Is.GreaterThan(DateTime.UtcNow - new TimeSpan(0, 5, 0))); visited = true; } }); Assert.That(visited, Is.True, "Visited is true"); visited = false; client.List(WcUri, a, delegate(object sender, SvnListEventArgs e) { Assert.That(e.Entry, Is.Not.Null, "Entry set"); if (e.Path == "LocalFileForTestList") { Assert.That(e.BasePath, Is.EqualTo("/trunk"), "Basepath"); Assert.That(e.Lock, Is.Null); Assert.That(e.Entry.Author, Is.EqualTo(Environment.UserName)); Assert.That(e.Entry.FileSize, Is.EqualTo(0)); Assert.That(e.Entry.NodeKind, Is.EqualTo(SvnNodeKind.File)); Assert.That(e.Entry.Revision, Is.EqualTo(ci.Revision)); Assert.That(e.Entry.Time, Is.GreaterThan(DateTime.UtcNow - new TimeSpan(0, 5, 0))); visited = true; } }); Assert.That(visited, Is.True, "Visited is true"); SvnWorkingCopyClient wcC = new SvnWorkingCopyClient(); SvnWorkingCopyState state; Assert.That(wcC.GetState(oneFile, out state)); Assert.That(state, Is.Not.Null); Assert.That(state.IsTextFile, Is.True); client.SetProperty(oneFile, "svn:mime-type", "application/binary"); Assert.That(wcC.GetState(oneFile, out state)); Assert.That(state, Is.Not.Null); Assert.That(state.IsTextFile, Is.False); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { lbInfo.Content = "一切正常"; String curDir = Directory.GetCurrentDirectory(); String curExe = System.Reflection.Assembly.GetExecutingAssembly().Location; SvnClient = new SvnClient(); SvnTarget svnTargetCurDir = SvnTarget.FromString(curDir); SvnTarget snvTargetCurExe = SvnTarget.FromString(curExe); // 未使用 - 获取目录下的文件状态 Collection <SvnStatusEventArgs> svnStatusEventArgsCollection; SvnClient.GetStatus(Directory.GetCurrentDirectory(), out svnStatusEventArgsCollection); // 未使用 - 空的 Collection <SvnPropertyListEventArgs> svnPropertyListEventArgsCollection; SvnClient.GetPropertyList(Directory.GetCurrentDirectory(), out svnPropertyListEventArgsCollection); // 未使用 - 获取一个文件的状态 Collection <SvnFileVersionEventArgs> svnFileVersionEventArgsCollection; try { SvnClient.GetFileVersions(snvTargetCurExe, out svnFileVersionEventArgsCollection); } catch (SvnWorkingCopyPathNotFoundException ex) { // 如果查询的文件未加入Repo,会抛此异常 } // 未使用 - 一个好像没什么用的信息列表,目录是第一个项,没有版本号 Collection <SvnListEventArgs> svnListEventArgsCollection; SvnClient.GetList(svnTargetCurDir, out svnListEventArgsCollection); // 未使用 - 工作目录全路径 String workingCopyRoot = SvnClient.GetWorkingCopyRoot(Directory.GetCurrentDirectory()); // 未使用 - 整个仓库的最新版本 long revision = 0; SvnClient.Youngest(Directory.GetCurrentDirectory(), out revision); // 此目录的相关变更 和 GUI中的ShowLog一样 是此目录的相关变更 Collection <SvnLogEventArgs> logList; try { SvnClient.GetLog(Directory.GetCurrentDirectory(), out logList); } catch (SvnInvalidNodeKindException ex) { lbInfo.Content = "当前目录不是SVN目录,停用更新检查功能"; btnUpdateAndLaunch.Visibility = Visibility.Hidden; return; } // 获取本地目录信息,当前版本和修改版本都是本地的 SvnInfoEventArgs svnInfoEventArgs; SvnClient.GetInfo(svnTargetCurDir, out svnInfoEventArgs); long curRevision = svnInfoEventArgs.Revision; // 当前的SVN版本 long changeRevision = logList[0].Revision; // 当前目录的最新远程变更版本 lbVersionChange.Content = changeRevision; lbVersionCur.Content = svnInfoEventArgs.Revision; if (curRevision < changeRevision) { btnUpdateAndLaunch.Visibility = Visibility.Visible; lbInfo.Content = "发现新版本"; } else { btnUpdateAndLaunch.Visibility = Visibility.Hidden; lbInfo.Content = "已经是最新版"; } // -------------------------------------------------------- // SvnWorkingCopyClient // -------------------------------------------------------- SvnWorkingCopyClient svnWorkingCopyClient = new SvnWorkingCopyClient(); // 未使用 只有一个值IsText 没看出有什么用处 SvnWorkingCopyState svnWorkingCopyState; svnWorkingCopyClient.GetState(Directory.GetCurrentDirectory(), out svnWorkingCopyState); // 未使用 返回仅本地存在的所有修改版本 SvnWorkingCopyVersion svnWorkingCopyVersion; svnWorkingCopyClient.GetVersion(curDir, out svnWorkingCopyVersion); // -------------------------------------------------------- // SvnTools // -------------------------------------------------------- // 未使用 传入正确的目录却返回false???? bool isCurDirInWorkingCopy = SvnTools.IsManagedPath(curDir); }