Index: src/main/java/hudson/plugins/jira/JiraProjectProperty.java
===================================================================
--- src/main/java/hudson/plugins/jira/JiraProjectProperty.java	(revision 37525)
+++ src/main/java/hudson/plugins/jira/JiraProjectProperty.java	(working copy)
@@ -168,7 +168,7 @@
 			}
 			JiraSite site = new JiraSite(new URL(url), request
 					.getParameter("user"), request.getParameter("pass"), false,
-					false, null, false, request.getParameter("groupVisibility"));
+					false, false, null, false, request.getParameter("groupVisibility"));
 			try {
 				site.createSession();
 				return FormValidation.ok();
Index: src/main/java/hudson/plugins/jira/JiraSite.java
===================================================================
--- src/main/java/hudson/plugins/jira/JiraSite.java	(revision 37525)
+++ src/main/java/hudson/plugins/jira/JiraSite.java	(working copy)
@@ -66,7 +66,12 @@
      * to record scm changes in jira issue
      * @since 1.21
      */
-    public final boolean recordScmChanges;   
+    public final boolean recordScmChanges;
+
+    /**
+     * True to show changed files when recording scm changes
+     */
+    public final boolean showScmFiles;
     
     /**
      * user defined pattern
@@ -95,7 +100,7 @@
      * @stapler-constructor
      */
     @DataBoundConstructor
-    public JiraSite(URL url, String userName, String password, boolean supportsWikiStyleComment, boolean recordScmChanges, String userPattern, 
+    public JiraSite(URL url, String userName, String password, boolean supportsWikiStyleComment, boolean recordScmChanges, boolean showScmFiles, String userPattern,
                     boolean updateJiraIssueForAllStatus, String groupVisibility) {
         if(!url.toExternalForm().endsWith("/"))
             try {
@@ -108,6 +113,7 @@
         this.password = Util.fixEmpty(password);
         this.supportsWikiStyleComment = supportsWikiStyleComment;
         this.recordScmChanges = recordScmChanges;
+        this.showScmFiles = showScmFiles;
         this.userPattern = Util.fixEmpty(userPattern);
         if (this.userPattern != null) {
         	this.userPat = Pattern.compile(this.userPattern);
Index: src/main/java/hudson/plugins/jira/Updater.java
===================================================================
--- src/main/java/hudson/plugins/jira/Updater.java	(revision 37525)
+++ src/main/java/hudson/plugins/jira/Updater.java	(working copy)
@@ -83,13 +83,14 @@
               doUpdate = build.getResult().isBetterOrEqualTo(Result.UNSTABLE);
             }
             boolean useWikiStyleComments = site.supportsWikiStyleComment;
+            boolean showScmFiles = site.showScmFiles;
             
             issues = getJiraIssues(ids, session, logger);
             build.getActions().add(new JiraBuildAction(build,issues));
             
             if (doUpdate) {
                 submitComments(build, logger, rootUrl, issues,
-                        session, useWikiStyleComments, site.recordScmChanges, site.groupVisibility);
+                        session, useWikiStyleComments, showScmFiles, site.recordScmChanges, site.groupVisibility);
             } else {
                 // this build didn't work, so carry forward the issues to the next build
                 build.addAction(new JiraCarryOverAction(issues));
@@ -122,25 +123,31 @@
     static void submitComments(
 	            AbstractBuild<?, ?> build, PrintStream logger, String hudsonRootUrl,
 	            List<JiraIssue> issues, JiraSession session,
-	            boolean useWikiStyleComments, boolean recordScmChanges, String groupVisibility) throws RemoteException {
+	            boolean useWikiStyleComments, boolean recordScmChanges, boolean showScmFiles, String groupVisibility) throws RemoteException {
 	    // copy to prevent ConcurrentModificationException
 	    List<JiraIssue> copy = new ArrayList<JiraIssue>(issues);
+        boolean[] validChangeSets = new boolean[ build.getChangeSet().getItems().length ];
         for (JiraIssue issue : copy) {
+            for( int i = 0; i < validChangeSets.length; ++i )
+              validChangeSets[ i ] = false ;
             try {
                 logger.println(Messages.Updater_Updating(issue.id));
                 StringBuilder aggregateComment = new StringBuilder();
+                int i = 0;
                 for(Entry e :build.getChangeSet()){
                     if(e.getMsg().toUpperCase().contains(issue.id)){
-                        aggregateComment.append(e.getMsg()).append("\n");
-                        // kutzi: don't know why the issue id was removed in previous versions:
-                        //aggregateComment = aggregateComment.replaceAll(id, "");
-
+                          //only append if not done yet: get rid of noise when using svn:externals
+                        if( aggregateComment.indexOf(e.getMsg()) == -1 ){
+                            aggregateComment.append(e.getMsg()).append("\n");
+                            validChangeSets[ i ] = true;
+                        }
                     }
+                    ++i;
                 }
 
                 session.addComment(issue.id,
-                    createComment(build, useWikiStyleComments,
-                            hudsonRootUrl, aggregateComment.toString(), recordScmChanges, issue), groupVisibility);
+                    createComment(build, validChangeSets, useWikiStyleComments,
+                            hudsonRootUrl, aggregateComment.toString(), recordScmChanges, showScmFiles, issue), groupVisibility);
             } catch (RemotePermissionException e) {
                 // Seems like RemotePermissionException can mean 'no permission' as well as
                 // 'issue doesn't exist'.
@@ -171,19 +178,19 @@
     /**
      * Creates a comment to be used in JIRA for the build.
      */
-	private static String createComment(AbstractBuild<?, ?> build,
-			boolean wikiStyle, String hudsonRootUrl, String scmComments, boolean recordScmChanges, JiraIssue jiraIssue) {
+	private static String createComment(AbstractBuild<?, ?> build, boolean[] validChangeSets,
+			boolean wikiStyle, String hudsonRootUrl, String scmComments, boolean recordScmChanges, boolean showScmFiles, JiraIssue jiraIssue) {
 		String comment = String.format(
 		    wikiStyle ?
-		    "Integrated in !%1$simages/16x16/%3$s! [%2$s|%4$s]\n     %5$s":
-		    "Integrated in %2$s (See [%4$s])\n    %5$s",
+		    "Integrated in !%1$simages/16x16/%3$s! [%2$s|%4$s]\n%5$s":
+		    "Integrated in %2$s (See [%4$s])\n%5$s",
 		    hudsonRootUrl,
 		    build,
 		    build.getResult().color.getImage(),
 		    Util.encode(hudsonRootUrl+build.getUrl()),
 		    scmComments);
 		if (recordScmChanges) {
-		    List<String> scmChanges = getScmComments(wikiStyle, build, jiraIssue );
+		    List<String> scmChanges = getScmComments(wikiStyle, showScmFiles, build, validChangeSets, jiraIssue );
 		    StringBuilder sb = new StringBuilder(comment);
 		    for (String scmChange : scmChanges)
 		    {
@@ -194,17 +201,17 @@
 		return comment;
 	}
 	
-	private static List<String> getScmComments(boolean wikiStyle, AbstractBuild<?, ?> build, JiraIssue jiraIssue)
+	private static List<String> getScmComments(boolean wikiStyle, boolean showScmFiles, AbstractBuild<?, ?> build, boolean[] validChangeSets, JiraIssue jiraIssue)
 	{
 	    RepositoryBrowser repoBrowser = null;
 	    if (build.getProject().getScm() != null) {
 	        repoBrowser = build.getProject().getScm().getEffectiveBrowser();
 	    }
         List<String> scmChanges = new ArrayList<String>();
-	    for (Entry change : build.getChangeSet()) {
-	        if (jiraIssue != null  && !StringUtils.contains( change.getMsg(), jiraIssue.id )) {
-	            continue;
-	        }
+        for( int i = 0 ; i < validChangeSets.length ; ++i ) {
+            if( !validChangeSets[ i ] )
+                continue;
+            Entry change = (Entry) build.getChangeSet().getItems()[ i ];
 	        try {
     	        String uid = change.getAuthor().getId();
     	        URL url = repoBrowser == null ? null : repoBrowser.getChangeSetLink( change );
@@ -229,10 +236,12 @@
     	                scmChange.append( url.toExternalForm() );
     	            }
     	        }
-    	        scmChange.append( "\nFiles : " ).append( "\n" );
-    	        for (AffectedFile affectedFile : change.getAffectedFiles()) {
-    	            scmChange.append( "* " ).append( affectedFile.getPath() ).append( "\n" );
-    	        }
+                if( showScmFiles ){
+    	            scmChange.append( "\nFiles : " ).append( "\n" );
+    	            for (AffectedFile affectedFile : change.getAffectedFiles()) {
+    	                scmChange.append( "* " ).append( affectedFile.getPath() ).append( "\n" );
+    	            }
+                }
     	        if (scmChange.length()>0) {
     	            scmChanges.add( scmChange.toString() );
     	        }
Index: src/main/resources/hudson/plugins/jira/JiraProjectProperty/global.jelly
===================================================================
--- src/main/resources/hudson/plugins/jira/JiraProjectProperty/global.jelly	(revision 37525)
+++ src/main/resources/hudson/plugins/jira/JiraProjectProperty/global.jelly	(working copy)
@@ -13,7 +13,10 @@
           </f:entry>
           <f:entry title="${%Record Scm changes}" help="/plugin/jira/help-scm-changes.html">
             <f:checkbox name="jira.recordScmChanges" checked="${site.recordScmChanges}"/>
-          </f:entry>       
+          </f:entry>
+          <f:entry title="${%Show Scm files}" help="/plugin/jira/help-scm-files.html">
+            <f:checkbox name="jira.showScmFiles" checked="${site.showScmFiles}"/>
+          </f:entry>
           <f:entry title="${%Issue Pattern}" help="/plugin/jira/help-issue-pattern.html">
             <f:textbox name="jira.userPattern" value="${site.userPattern}"
                 checkMethod="post"