@NotNull public static List<VcsCommitMetadata> loadMetadata( @NotNull final Project project, @NotNull final VirtualFile root, int limit, @NotNull List<String> parameters) throws VcsException { final VcsLogObjectsFactory factory = getObjectsFactoryWithDisposeCheck(project); if (factory == null) { return Collections.emptyList(); } HgVcs hgvcs = HgVcs.getInstance(project); assert hgvcs != null; HgVersion version = hgvcs.getVersion(); List<String> templateList = HgBaseLogParser.constructDefaultTemplate(version); templateList.add("{desc}"); String[] templates = ArrayUtil.toStringArray(templateList); HgCommandResult result = getLogResult( project, root, version, limit, parameters, HgChangesetUtil.makeTemplate(templates)); HgBaseLogParser<VcsCommitMetadata> baseParser = new HgBaseLogParser<VcsCommitMetadata>() { @Override protected VcsCommitMetadata convertDetails( @NotNull String rev, @NotNull String changeset, @NotNull SmartList<HgRevisionNumber> parents, @NotNull Date revisionDate, @NotNull String author, @NotNull String email, @NotNull List<String> attributes) { String message = parseAdditionalStringAttribute(attributes, MESSAGE_INDEX); int subjectIndex = message.indexOf('\n'); String subject = subjectIndex == -1 ? message : message.substring(0, subjectIndex); List<Hash> parentsHash = new SmartList<Hash>(); for (HgRevisionNumber parent : parents) { parentsHash.add(factory.createHash(parent.getChangeset())); } return factory.createCommitMetadata( factory.createHash(changeset), parentsHash, revisionDate.getTime(), root, subject, author, email, message, author, email, revisionDate.getTime()); } }; return getCommitRecords(project, result, baseParser); }
@BeforeMethod protected void setUp(final Method testMethod) throws Exception { // setting hg executable String exec = System.getenv(HG_EXECUTABLE_PATH); if (exec != null) { myClientBinaryPath = new File(exec); } if (exec == null || !myClientBinaryPath.exists()) { final File pluginRoot = new File(PluginPathManager.getPluginHomePath(HgVcs.VCS_NAME)); myClientBinaryPath = new File(pluginRoot, "testData/bin"); } HgVcs.setTestHgExecutablePath(myClientBinaryPath.getPath()); myMainRepo = initRepositories(); myProjectDir = new File(myMainRepo.getDirFixture().getTempDirPath()); UIUtil.invokeAndWaitIfNeeded( new Runnable() { @Override public void run() { try { initProject(myProjectDir, testMethod.getName()); activateVCS(HgVcs.VCS_NAME); } catch (Exception e) { e.printStackTrace(); } } }); myChangeListManager = new HgTestChangeListManager(myProject); myTraceClient = true; doActionSilently(VcsConfiguration.StandardConfirmation.ADD); doActionSilently(VcsConfiguration.StandardConfirmation.REMOVE); }
/** * Get & parse hg log detailed output with commits, their parents and their changes. For null * destination return log command result * * <p> * * <p>Warning: this is method is efficient by speed, but don't query too much, because the whole * log output is retrieved at once, and it can occupy too much memory. The estimate is ~600Kb for * 1000 commits. */ @NotNull public static List<? extends VcsFullCommitDetails> history( @NotNull final Project project, @NotNull final VirtualFile root, int limit, @NotNull List<String> parameters) throws VcsException { HgVcs hgvcs = HgVcs.getInstance(project); assert hgvcs != null; final HgVersion version = hgvcs.getVersion(); String[] templates = HgBaseLogParser.constructFullTemplateArgument(true, version); HgCommandResult result = getLogResult( project, root, version, limit, parameters, HgChangesetUtil.makeTemplate(templates)); return createFullCommitsFromResult(project, root, result, version, false); }
private void doTest() throws HgCommandException, VcsException { CachingCommittedChangesProvider provider = myVcs.getCachingCommittedChangesProvider(); assert provider != null; //noinspection unchecked List<CommittedChangeList> revisions = provider.getCommittedChanges( mySettings, new HgRepositoryLocation(myRepository.getUrl(), myRepository), -1); assertTrue(!revisions.isEmpty()); }
@NotNull public static List<TimedVcsCommit> readAllHashes( @NotNull Project project, @NotNull VirtualFile root, @NotNull final Consumer<VcsUser> userRegistry, @NotNull List<String> params) throws VcsException { final VcsLogObjectsFactory factory = getObjectsFactoryWithDisposeCheck(project); if (factory == null) { return Collections.emptyList(); } HgVcs hgvcs = HgVcs.getInstance(project); assert hgvcs != null; HgVersion version = hgvcs.getVersion(); String[] templates = ArrayUtil.toStringArray(HgBaseLogParser.constructDefaultTemplate(version)); HgCommandResult result = getLogResult(project, root, version, -1, params, HgChangesetUtil.makeTemplate(templates)); return getCommitRecords( project, result, new HgBaseLogParser<TimedVcsCommit>() { @Override protected TimedVcsCommit convertDetails( @NotNull String rev, @NotNull String changeset, @NotNull SmartList<HgRevisionNumber> parents, @NotNull Date revisionDate, @NotNull String author, @NotNull String email, @NotNull List<String> attributes) { List<Hash> parentsHash = new SmartList<Hash>(); for (HgRevisionNumber parent : parents) { parentsHash.add(factory.createHash(parent.getChangeset())); } userRegistry.consume(factory.createUser(author, email)); return factory.createTimedCommit( factory.createHash(changeset), parentsHash, revisionDate.getTime()); } }); }
@Override protected void showAffectedPaths(int lineNum) { if (lineNum >= 0 && lineNum < myLines.size()) { HgAnnotationLine line = myLines.get(lineNum); VirtualFile file = myFile.toFilePath().getVirtualFile(); if (line != null && file != null) { ShowAllAffectedGenericAction.showSubmittedFiles( myProject, line.getVcsRevisionNumber(), file, HgVcs.getKey()); } } }
public HgExecutableValidator(Project project) { super(project, HgVcs.NOTIFICATION_GROUP_ID); myVcs = HgVcs.getInstance(project); setMessagesAndTitles( HgVcsMessages.message("hg4idea.executable.notification.title"), HgVcsMessages.message("hg4idea.executable.notification.description"), HgVcsMessages.message("hg4idea.executable.dialog.title"), HgVcsMessages.message("hg4idea.executable.dialog.description"), HgVcsMessages.message("hg4idea.executable.dialog.error"), HgVcsMessages.message("hg4idea.executable.filechooser.title"), HgVcsMessages.message("hg4idea.executable.filechooser.description")); }
@Override public void setUp() throws Exception { super.setUp(); myVcs = HgVcs.getInstance(myProject); assert myVcs != null; mySettings = new ChangeBrowserSettings(); cd(myRepository); touch("f2.txt"); hg("add"); hg("commit -m add"); java.util.Calendar now = java.util.Calendar.getInstance(); now.add(YEAR, 1); dateBefore = ChangeBrowserSettings.DATE_FORMAT.format(now.getTime()); now.set(YEAR, 1970); dateAfter = ChangeBrowserSettings.DATE_FORMAT.format(now.getTime()); }
private VcsHistorySession getHistorySession(String relativePath) throws VcsException { return HgVcs.getInstance(myProject) .getVcsHistoryProvider() .createSessionFor(VcsUtil.getFilePath(new File(myProjectDir, relativePath), false)); }
@Override public VcsKey getVcsKey() { return HgVcs.getKey(); }
@Override protected void saveCurrentExecutable(String executable) { myVcs.getGlobalSettings().setHgExecutable(executable); }
@Override public boolean isExecutableValid(String executable) { return new HgVersionCommand().isValid(executable, myVcs.getGlobalSettings().isRunViaBash()); }
@Override protected Configurable getConfigurable(Project project) { return myVcs == null ? null : myVcs.getConfigurable(); }
@Override protected String getCurrentExecutable() { return myVcs.getHgExecutable(); }