2013年12月5日 星期四

modify geanyvc for support subversion 1.8.4

更換 SVN 1.8.4 後發現我常用的 geany + geanyvc &meld 卻不能使用 了 .
主要原因是因為  geanyvc 沒有辦法找到 .svn 資料夾 .
看一下 google 上的討論 ,  只要修改兩個小地方就可以用了, 那就動手升級 geany 和 geanyvc 吧 !!

下載 source code .
geany :  "geany-1.23.1.tar.gz"
geany plugins :  "geany-plugins-1.23.tar.gz"


先編譯 geany:
A. untar source code .
B. into source tree , do ./configure
    這時候會遇到問題, 缺少 gtk ... glib 等....
    $> sudo apt-get install gtk+-2.0
    如果缺少 intltool-update , 就在安裝一次 .
    $> sudo apt-get install intltool 

C.  make
D. sudo make install

這樣就有 geany 1.23.1 版了.不過記住移除就的 geany , 避免有所衝突.

接著編譯 geany-plugins :

A. untar source code.
B. 修改 ..../geany-plugins-1.23/geanyvc/src/vc_svn.c file.

static gchar * get_base_dir(const gchar * path)
{

 .................................................

                break;
        }
        while (strcmp(base, base_prev) != 0);

//---- Add patch by Jeff Hsieh.

   if (base_prev == NULL)
   {
       /* fallback for Subversion 1.7: try to climb up the tree until we
        * find a .svn subdirectory */
        base_prev = find_subdir_path(path, ".svn");
   }


        g_free(base);
        return base_prev

}

還有將下列兩行移除.

static gboolean in_vc_svn(const gchar * filename)
{

 .............................
        gboolean ret = FALSE;
        gchar *std_output;

//---- Remove by Jeff Hsieh.
//      if (!find_dir(filename, ".svn", FALSE))
//              return FALSE;


        if (g_file_test(filename, G_FILE_TEST_IS_DIR))
                return TRUE;
 

 .................................

}

這些修改在 google 上都找的到 , 詳細討論請自行到 google 上搜尋.

C. into source tree of top .
    $> ./configure --enable-geanyvc
    預設應該會打咖 geanvc , 和其他一堆 plugins .... 不過我確保有我要的 geanyvc , 所以特別加註 .

D. make
E. sudo make install


完成了.... 這樣的 geany + geanyvc 就可以支援 meld 的 diff viewer 了 .......