@NotNull
  public SVNStatusClient createStatusClient() {
    SVNStatusClient client = new SVNStatusClient(getPool(), getSvnOptions());
    client.setIgnoreExternals(false);

    return setupClient(client);
  }
 public SVNStatusClient createStatusClient() {
   SVNStatusClient client = new SVNStatusClient(getPool(), myConfiguration.getOptions(myProject));
   client
       .getOperationsFactory()
       .setAuthenticationManager(myConfiguration.getAuthenticationManager(this));
   client.setIgnoreExternals(false);
   return client;
 }
  public void testStatusDoesNotLockForWrite() throws Exception {
    final File ioFile = new File(myWorkingCopyRoot, filename);
    ioFile.getParentFile().mkdirs();

    /*SVNWCClient client11 = new SVNWCClient((ISVNRepositoryPool)null, new DefaultSVNOptions());
    client11.doAdd(ioFile.getParentFile(), true, false, true, true);*/

    ioFile.createNewFile();
    try {
      final SVNStatusClient readClient =
          new SVNStatusClient((ISVNRepositoryPool) null, new DefaultSVNOptions());
      final Semaphore semaphore = new Semaphore();
      final Semaphore semaphoreMain = new Semaphore();
      final Semaphore semaphoreWokeUp = new Semaphore();

      final AtomicReference<Boolean> wasUp = new AtomicReference<Boolean>(false);
      final ISVNStatusHandler handler =
          status -> {
            semaphore.waitFor();
            wasUp.set(true);
          };

      semaphore.down();
      semaphoreMain.down();
      semaphoreWokeUp.down();

      final SVNException[] exception = new SVNException[1];
      Thread thread =
          new Thread(
              () -> {
                try {
                  semaphoreMain.up();
                  readClient.doStatus(myWorkingCopyRoot, true, false, true, false, handler);
                  semaphoreWokeUp.up();
                } catch (SVNException e) {
                  exception[0] = e;
                }
              },
              "svn test");
      thread.start();

      semaphoreMain.waitFor();
      TimeoutUtil.sleep(5);
      SVNWCClient client = new SVNWCClient((ISVNRepositoryPool) null, new DefaultSVNOptions());
      client.doAdd(ioFile.getParentFile(), true, false, true, true);
      semaphore.up();
      semaphoreWokeUp.waitFor();

      Assert.assertEquals(true, wasUp.get().booleanValue());
      if (exception[0] != null) {
        throw exception[0];
      }
      thread.join();
    } finally {
      ioFile.delete();
    }
  }
 @Nullable
 private String getStatus(final File ioFile) throws SVNException {
   try {
     SVNStatusClient readClient =
         new SVNStatusClient((ISVNRepositoryPool) null, new DefaultSVNOptions());
     final SVNStatus status = readClient.doStatus(ioFile, false);
     return status == null ? null : status.getNodeStatus().toString();
   } catch (SVNException e) {
     if (SVNErrorCode.WC_NOT_WORKING_COPY.equals(e.getErrorMessage().getErrorCode())) {
       return null;
     }
     throw e;
   }
 }
  @Test
  public void testRefusedAdd() throws Exception {
    SVNWCDb db = new SVNWCDb();
    final File ioFile = new File(myWorkingCopyRoot, filename);
    ioFile.getParentFile().mkdirs();
    ioFile.createNewFile();
    try {
      db.open(ISVNWCDb.SVNWCDbOpenMode.ReadWrite, new DefaultSVNOptions(), true, true);
      SVNWCContext context =
          new SVNWCContext(
              db,
              new ISVNEventHandler() {
                @Override
                public void handleEvent(SVNEvent event, double progress) throws SVNException {}

                @Override
                public void checkCancelled() throws SVNCancelException {}
              });

      File file = context.acquireWriteLock(myWorkingCopyRoot, false, true);
      boolean failed = false;
      try {
        SVNWCClient client = new SVNWCClient((ISVNRepositoryPool) null, new DefaultSVNOptions());
        client.doAdd(ioFile, true, false, false, true);
      } catch (SVNException e) {
        Assert.assertEquals(155004, e.getErrorMessage().getErrorCode().getCode());
        failed = true;
      } finally {
        context.releaseWriteLock(myWorkingCopyRoot);
      }
      Assert.assertTrue(failed);

      SVNStatusClient readClient =
          new SVNStatusClient((ISVNRepositoryPool) null, new DefaultSVNOptions());
      // readClient.doStatus(ioFile, false);
      readClient.doStatus(myWorkingCopyRoot, false);
    } finally {
      ioFile.delete();
      db.close();
    }
  }
 private static SVNStatus getExternalItemStatus(final SvnVcs vcs, final File file) {
   final SVNStatusClient statusClient = vcs.createStatusClient();
   try {
     if (file.isDirectory()) {
       return statusClient.doStatus(file, false);
     } else {
       final File parent = file.getParentFile();
       if (parent != null) {
         statusClient.setFilesProvider(
             new ISVNStatusFileProvider() {
               public Map getChildrenFiles(File parent) {
                 return Collections.singletonMap(file.getAbsolutePath(), file);
               }
             });
         final Ref<SVNStatus> refStatus = new Ref<SVNStatus>();
         statusClient.doStatus(
             parent,
             SVNRevision.WORKING,
             SVNDepth.FILES,
             false,
             true,
             false,
             false,
             new ISVNStatusHandler() {
               public void handleStatus(final SVNStatus status) throws SVNException {
                 if (file.equals(status.getFile())) {
                   refStatus.set(status);
                 }
               }
             },
             null);
         return refStatus.get();
       }
     }
   } catch (SVNException e) {
     //
   }
   return null;
 }