Mercurial > hg > mercurial
view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/StatusCommand.java @ 44:1490e2981799
labeling/tagging support
author | Pavel.Sher |
---|---|
date | Fri, 05 Sep 2008 01:15:29 +0400 |
parents | 7944e8985ebd |
children | 5d9c34cb543a |
line wrap: on
line source
/* * Copyright 2000-2007 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; import com.intellij.execution.configurations.GeneralCommandLine; import jetbrains.buildServer.ExecResult; import jetbrains.buildServer.vcs.VcsException; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; public class StatusCommand extends BaseCommand { private String myFromId; private String myToId; public StatusCommand(@NotNull final Settings settings) { super(settings); } public void setFromRevId(final String fromId) { myFromId = fromId; } public void setToRevId(final String toId) { myToId = toId; } public List<ModifiedFile> execute() throws VcsException { GeneralCommandLine cli = createCommandLine(); cli.addParameter("status"); cli.addParameter("--rev"); String from = myFromId; if (from == null) from = "0"; String to = myToId; if (to == null) to = "0"; cli.addParameter(from + ":" + to); ExecResult res = runCommand(cli); return parseFiles(res.getStdout()); } private List<ModifiedFile> parseFiles(final String stdout) { List<ModifiedFile> result = new ArrayList<ModifiedFile>(); String[] lines = stdout.split("\n"); for (String line: lines) { if (line.length() == 0) continue; char modifier = line.charAt(0); String path = line.substring(2); ModifiedFile.Status status = toStatus(modifier); if (status == ModifiedFile.Status.UNKNOWN) continue; result.add(new ModifiedFile(status, path)); } return result; } private ModifiedFile.Status toStatus(final char modifier) { switch (modifier) { case 'A': return ModifiedFile.Status.ADDED; case 'M': return ModifiedFile.Status.MODIFIED; case 'R': return ModifiedFile.Status.REMOVED; default: return ModifiedFile.Status.UNKNOWN; } } }