From 85ef2954a22a65a65c948b77aaa61c799c86e48d Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 26 May 2009 12:25:32 +0200
Subject: [PATCH] Enable usage of "_svn" as internal directory name for
 TortoiseSVN.

Option for  TortoiseSVN to avoid hassle with other IDEs.
---
 src/plugins/subversion/subversionplugin.cpp | 22 ++++++++++++++++++---
 src/plugins/subversion/subversionplugin.h   |  2 +-
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index de1e01d26fb..2cb82e13f89 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -164,11 +164,22 @@ StatusList parseStatusOutput(const QString &output)
     return changeSet;
 }
 
+// Return a list of names for the internal svn directories
+static inline QStringList svnDirectories()
+{
+    QStringList rc(QLatin1String(".svn"));
+#ifdef Q_OS_WIN
+    // Option on Windows systems to avoid hassle with some IDEs
+    rc.push_back(QLatin1String("_svn"));
+#endif
+    return rc;
+}
+
 // ------------- SubversionPlugin
 SubversionPlugin *SubversionPlugin::m_subversionPluginInstance = 0;
 
 SubversionPlugin::SubversionPlugin() :
-    m_svnDotDirectory(QLatin1String(".svn")),
+    m_svnDirectories(svnDirectories()),
     m_versionControl(0),
     m_coreListener(0),
     m_settingsPage(0),
@@ -1100,8 +1111,13 @@ bool SubversionPlugin::managesDirectory(const QString &directory) const
 
 bool SubversionPlugin::managesDirectory(const QDir &directory) const
 {
-    const QString svnDir = directory.absoluteFilePath(m_svnDotDirectory);
-    return QFileInfo(svnDir).isDir();
+    const int dirCount = m_svnDirectories.size();
+    for (int i = 0; i < dirCount; i++) {
+        const QString svnDir = directory.absoluteFilePath(m_svnDirectories.at(i));
+        if (QFileInfo(svnDir).isDir())
+            return true;
+    }
+    return false;
 }
 
 QString SubversionPlugin::findTopLevelForDirectory(const QString &directory) const
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index 071b2f9f852..fbc14ff0a25 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -140,7 +140,7 @@ private:
     bool commit(const QString &messageFile, const QStringList &subVersionFileList);
     void cleanChangeTmpFile();
 
-    const QString m_svnDotDirectory;
+    const QStringList m_svnDirectories;
 
     SubversionSettings m_settings;
     Core::IVersionControl *m_versionControl;
-- 
GitLab