private void processChange()

in src/org/jetbrains/tfsIntegration/core/TFSChangeList.java [201:269]


  private void processChange(int changeset,
                             final com.microsoft.schemas.teamfoundation._2005._06.versioncontrol.clientservices._03.Change change)
    throws TfsException {
    final ChangeTypeMask changeType = new ChangeTypeMask(change.getType());

    final FilePath localPath =
      myWorkspace
        .findLocalPathByServerPath(change.getItem().getItem(), change.getItem().getType() == ItemType.Folder, getVcs().getProject());

    if (localPath == null) {
      // original path is out of current mappings -> no way to determine local path for it
      return;
    }

    if (changeType.containsAny(ChangeType_type0.Add, ChangeType_type0.Undelete, ChangeType_type0.Branch)) {
      if (changeType.contains(ChangeType_type0.Add)) {
        TFSVcs.assertTrue(changeType.contains(ChangeType_type0.Encoding));
        if (change.getItem().getType() == ItemType.File) {
          TFSVcs.assertTrue(changeType.contains(ChangeType_type0.Edit));
        }
        else {
          TFSVcs.assertTrue(!changeType.contains(ChangeType_type0.Edit));
        }
      }
      TFSVcs.assertTrue(!changeType.contains(ChangeType_type0.Delete));
      myAddedPaths.add(localPath);
      return;
    }

    if (changeType.contains(ChangeType_type0.Delete)) {
      TFSVcs.assertTrue(changeType.size() <= 3, "Unexpected change type: " + changeType); // can be merge
      //TFSVcs.assertTrue(changeType.containsOnly(ChangeType.Delete) || changeType.contains(ChangeType.Rename),
      //                  "Unexpected change type: " + changeType);

      int previousCs = change.getItem().getCs() - 1; // same as getPreviousVersion(change.getItem(), changeset).getCs())

      //Item item = getPreviousVersion(change.getItem(), changeset);
      myDeletedPaths.put(localPath, previousCs);
      return;
    }

    if (changeType.contains(ChangeType_type0.Rename)) {
      if (change.getItem().getDid() != Integer.MIN_VALUE) {
        // the item was deleted in some previous checkin
        return;
      }
      Item item = getPreviousVersion(change.getItem(), changeset);
      FilePath originalPath = myWorkspace
        .findLocalPathByServerPath(item.getItem(), item.getType() == ItemType.Folder, getVcs().getProject());

      if (originalPath != null) {
        myMovedPaths.put(originalPath, Pair.create(localPath, item.getCs()));
      }
      else {
        // original path is out of current mappings -> no way to determine local path for it
      }
      return;
    }

    if (changeType.containsAny(ChangeType_type0.Edit, ChangeType_type0.Merge)) {
      int previousCs = change.getItem().getCs() - 1; // same as getPreviousVersion(change.getItem(), changeset).getCs())
      //Item item = getPreviousVersion(change.getItem(), changeset);
      //TFSVcs.assertTrue(changeType.contains(ChangeType.Value.Encoding));
      myModifiedPaths.put(localPath, previousCs);
      return;
    }

    TFSVcs.error("Unknown change: " + changeType + " for item " + change.getItem().getItem());
  }