Hi,
MG>Kevin..would you know of a GIT macrodef which can sub for build.xml svn-checker macrodef? That is long part of Lucene’s build.xml. Was committed 2 days after the switch to git: https://github.com/apache/lucene-solr/blob/9d35aafc565a880c5cae7c21fa6c10fbdd0399ec/build.xml#L556-L621 It was just renamed to “ant check-working-copy” Uwe ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen <http://www.thetaphi.de/> http://www.thetaphi.de eMail: u...@thetaphi.de From: Martin Gainty [mailto:mgai...@hotmail.com] Sent: Wednesday, February 24, 2016 10:19 PM To: dev@lucene.apache.org Subject: RE: ant idea and IntelliJ 15 _____ From: <mailto:risd...@avalonconsult.com> risd...@avalonconsult.com Date: Wed, 24 Feb 2016 07:26:18 -0600 Subject: Re: ant idea and IntelliJ 15 To: <mailto:dev@lucene.apache.org> dev@lucene.apache.org On Wed, Feb 24, 2016 at 3:47 AM, Jan Høydahl <jan....@cominvent.com <mailto:jan....@cominvent.com> > wrote: Not sure if the problem started after I upgraded to IntelliJ 15 or after we switched to git or what. Others having the same issues? I haven't had any issues using IntellJ 14, 15 or 16 EAP with lucene-solr before or after switching to Git. I've cloned and cleaned out the IntelliJ settings multiple times and haven't had any issues opening the project in IntelliJ after doing "ant idea". Kevin Risden Hadoop Tech Lead | <http://www.avalonconsult.com/> Avalon Consulting, LLC M: 732 213 8417 <http://www.linkedin.com/company/avalon-consulting-llc> LinkedIn | <http://www.google.com/+AvalonConsultingLLC> Google+ | <https://twitter.com/avalonconsult> Twitter MG>Kevin..would you know of a GIT macrodef which can sub for build.xml svn-checker macrodef? <macrodef xmlns:ivy="antlib:org.apache.ivy.ant" name="svn-checker"> <attribute name="failonmodifications" default="true"/> <!-- false if file modifications are allowed --> <sequential> <ivy:cachepath organisation="org.tmatesoft.svnkit" module="svnkit" revision="${svnkit.version}" inline="true" conf="default" transitive="true" pathid="svnkit.classpath"/> <local name="svn.checkprops.failed"/> <local name="svn.unversioned.failed"/> <local name="svn.keywords.failed"/> <local name="svn.changed.failed"/> <groovy taskname="svn" classpathref="svnkit.classpath"><![CDATA[ import org.tmatesoft.svn.core.*; import org.tmatesoft.svn.core.wc.*; import org.apache.tools.ant.Project; SVNClientManager manager = SVNClientManager.newInstance(); SVNStatusClient statusClient = manager.getStatusClient(); SVNWCClient wcClient = manager.getWCClient(); File basedir = new File(properties['basedir']).getAbsoluteFile(); int baseLen = basedir.toString().length(); // do some fake check, to verify if this is valid SVN working copy. If this fails ignore checks but log some useful message. task.log('Initializing working copy...'); try { wcClient.doInfo(basedir, SVNRevision.WORKING); } catch (SVNException ex) { def ec = ex.getErrorMessage().getErrorCode(); int code = ec.getCode(); int category = ec.getCategory(); if (code == SVNErrorCode.WC_NOT_DIRECTORY.getCode() || code == SVNErrorCode.WC_NOT_FILE.getCode()) { task.log('WARNING: Development directory is not an SVN checkout! Disabling checks...', Project.MSG_WARN); return; } else if (category == SVNErrorCode.WC_CATEGORY) { task.log('WARNING: Development directory is not a valid SVN checkout (' + ex.getErrorMessage() + '). Disabling checks...', Project.MSG_WARN); return; } else { throw ex; } } def convertRelative = { file -> '.' + file.getAbsolutePath().substring(baseLen).replace(File.separatorChar, (char)'/'); } Set missingProps = new TreeSet(), withKeywords = new TreeSet(), unversioned = new TreeSet(), changed = new TreeSet(); task.log('Getting all versioned and unversioned files...'); statusClient.doStatus(basedir, SVNRevision.WORKING, SVNDepth.fromRecurse(true), false, true, false, false, { status -> SVNStatusType nodeStatus = status.getNodeStatus(); if (nodeStatus == SVNStatusType.STATUS_UNVERSIONED || nodeStatus == SVNStatusType.STATUS_MISSING) { unversioned.add(convertRelative(status.getFile())); } else if (status.getKind() == SVNNodeKind.FILE && nodeStatus != SVNStatusType.STATUS_DELETED) { missingProps.add(convertRelative(status.getFile())); } if (nodeStatus == SVNStatusType.STATUS_MODIFIED || nodeStatus == SVNStatusType.STATUS_REPLACED || nodeStatus == SVNStatusType.STATUS_DELETED || nodeStatus == SVNStatusType.STATUS_ADDED) { changed.add(convertRelative(status.getFile())); } } as ISVNStatusHandler, null); task.log('Filtering files with existing svn:eol-style...'); wcClient.doGetProperty(basedir, 'svn:eol-style', SVNRevision.WORKING, SVNRevision.WORKING, true, { file, prop -> missingProps.remove(convertRelative(file)); } as ISVNPropertyHandler); task.log('Filtering files with binary svn:mime-type...'); wcClient.doGetProperty(basedir, 'svn:mime-type', SVNRevision.WORKING, SVNRevision.WORKING, true, { file, prop -> prop = SVNPropertyValue.getPropertyAsString(prop.getValue()); if (prop.startsWith('application/') || prop.startsWith('image/')) { missingProps.remove(convertRelative(file)); } } as ISVNPropertyHandler); task.log('Scanning for files with svn:keywords property...'); wcClient.doGetProperty(basedir, 'svn:keywords', SVNRevision.WORKING, SVNRevision.WORKING, true, { file, prop -> withKeywords.add(convertRelative(file)); } as ISVNPropertyHandler); def setProjectPropertyFromSet(prop, set) { if (set) { properties[prop] = '* ' + set.join(properties['line.separator'] + '* '); } }; setProjectPropertyFromSet('svn.checkprops.failed', missingProps); setProjectPropertyFromSet('svn.keywords.failed', withKeywords); setProjectPropertyFromSet('svn.unversioned.failed', unversioned); setProjectPropertyFromSet('svn.changed.failed', changed); ]]></groovy> <fail if="svn.checkprops.failed" message="The following files are missing svn:eol-style (or binary svn:mime-type):${line.separator}${svn.checkprops.failed}"/> <fail if="svn.keywords.failed" message="The following files have the svn:keywords property set:${line.separator}${svn.keywords.failed}"/> <fail if="svn.unversioned.failed" message="Source checkout is dirty after running tests!!! Offending files:${line.separator}${svn.unversioned.failed}"/> <fail message="Source checkout is modified !!! Offending files:${line.separator}${svn.changed.failed}"> <condition> <and> <istrue value="@{failonmodifications}"/> <isset property="svn.changed.failed"/> </and> </condition> </fail> </sequential> </macrodef> MG>svn-checker invoked thru check-svn-working-copy target in build.xml <target name="check-svn-working-copy" depends="ivy-availability-check,ivy-fail,ivy-configure,resolve-groovy"> <svn-checker failonmodifications="false"/> </target> MG>Thanks Kevin! ------------------------------------------------------------------------------------------------------------- This message (including any attachments) contains confidential information intended for a specific individual and purpose, and is protected by law. If you are not the intended recipient, you should delete this message. Any disclosure, copying, or distribution of this message, or the taking of any action based on it, is strictly prohibited.