File ln()

in clearcase-agent/src/jetbrains/buildServer/vcs/clearcase/agent/LinkBasedSourceProvider.java [150:176]


  File ln(final CCSnapshotView ccview, final File absoluteLinkSource, final File linkTargetOwnerDirectory) throws CCException {
    try {
      if (!linkTargetOwnerDirectory.exists()) {
        linkTargetOwnerDirectory.mkdirs();
      }
      final File linkTarget = new File(linkTargetOwnerDirectory.getAbsolutePath(), absoluteLinkSource.getName());
      final String command;
      if (isWindows()) {
        if (absoluteLinkSource.isDirectory()) {
          command = String.format("cmd /c mklink /D %s %s", linkTarget.getAbsolutePath(), absoluteLinkSource.getAbsolutePath());
        } else {
          command = String.format("cmd /c mklink %s %s", linkTarget.getAbsolutePath(), absoluteLinkSource.getAbsolutePath());
        }
      } else {
        if (absoluteLinkSource.isDirectory()) {
          command = String.format("ln -s %s %s", absoluteLinkSource.getAbsolutePath(), linkTarget.getAbsolutePath());
        } else {
          command = String.format("ln -s %s %s", absoluteLinkSource.getAbsolutePath(), linkTarget.getAbsolutePath());
        }
      }
      Util.execAndWait(command);
      store(ccview, linkTarget);
      return linkTarget;
    } catch (Exception e) {
      throw new CCException(e);
    }
  }