diff --git a/repo/installer.go b/repo/installer.go
index 711fdc0..13d4696 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -15,6 +15,7 @@
 	gpath "github.com/Masterminds/glide/path"
 	"github.com/Masterminds/glide/util"
 	"github.com/Masterminds/semver"
+	"github.com/Masterminds/vcs"
 	"github.com/codegangsta/cli"
 )
 
@@ -576,21 +577,8 @@
 	if vIsRef && depIsRef {
 		singleWarn("Conflict: %s rev is currently %s, but %s wants %s\n", v.Name, v.Reference, req, dep.Reference)
 
-		pf := msg.Default.Color(msg.Green, "[INFO] ")
-		fm := "%s reference %s:\n" +
-			pf + "- author: %s\n" +
-			pf + "- commit date: %s\n" +
-			pf + "- subject (first line): %s\n"
-
-		vci, err := repo.CommitInfo(v.Reference)
-		if err == nil {
-			singleInfo(fm, v.Name, v.Reference, vci.Author, vci.Date.Format(time.RFC1123Z), commitSubjectFirstLine(vci.Message))
-		}
-
-		depci, err := repo.CommitInfo(dep.Reference)
-		if err == nil {
-			singleInfo(fm, v.Name, dep.Reference, depci.Author, depci.Date.Format(time.RFC1123Z), commitSubjectFirstLine(depci.Message))
-		}
+		displayCommitInfo(repo, v)
+		displayCommitInfo(repo, dep)
 
 		singleInfo("Keeping %s %s", v.Name, v.Reference)
 		return v
@@ -607,6 +595,7 @@
 		if err != nil {
 			// The existing version is not a semantic version.
 			singleWarn("Conflict: %s version is %s, but also asked for %s\n", v.Name, v.Reference, dep.Reference)
+			displayCommitInfo(repo, v)
 			singleInfo("Keeping %s %s", v.Name, v.Reference)
 			return v
 		}
@@ -630,6 +619,7 @@
 		ver, err := semver.NewVersion(dep.Reference)
 		if err != nil {
 			singleWarn("Conflict: %s version is %s, but also asked for %s\n", v.Name, v.Reference, dep.Reference)
+			displayCommitInfo(repo, dep)
 			singleInfo("Keeping %s %s", v.Name, v.Reference)
 			return v
 		}
@@ -730,6 +720,19 @@
 	i.from[name] = root
 }
 
+var displayCommitInfoPrefix = msg.Default.Color(msg.Green, "[INFO] ")
+var displayCommitInfoTemplate = "%s reference %s:\n" +
+	displayCommitInfoPrefix + "- author: %s\n" +
+	displayCommitInfoPrefix + "- commit date: %s\n" +
+	displayCommitInfoPrefix + "- subject (first line): %s\n"
+
+func displayCommitInfo(repo vcs.Repo, dep *cfg.Dependency) {
+	c, err := repo.CommitInfo(dep.Reference)
+	if err == nil {
+		singleInfo(displayCommitInfoTemplate, dep.Name, dep.Reference, c.Author, c.Date.Format(time.RFC1123Z), commitSubjectFirstLine(c.Message))
+	}
+}
+
 func commitSubjectFirstLine(sub string) string {
 	lines := strings.Split(sub, "\n")
 	if len(lines) <= 1 {
