码云上传小工具

来源:互联网 发布:java获取浏览器类型 编辑:程序博客网 时间:2024/06/05 02:36

  自从用了码云后,感觉太好用了,速度很快,而且还能建私有项目,这两点感觉比gitbub好多了,特别是现在翻墙不是不能用就是速度很慢的情况下。

  但是昨天想把一些代码上传上去,遇到了一个问题,感觉有点坑,就是码云不让上传空文件夹,码云的解释是这样的:

  

  上传少量文件是没啥问题,但是数量稍微多一些就吃不消了,而且每次因为空文件夹提交失败都是在提交传输后期,很浪费时间,还是自己写的小工具,用不了几行代码。

  

其实差不多就一个按钮,选择一下需要提交的路径,然后自动寻找到所有的空文件夹添加.keep文件,还有个删除bin/obj的CheckBox是因为我发现svn有个bug,就是我已经设置了bin和obj文件夹为全局忽略,但是提交的时候有些目录下仍然会出现在提交列表中,有点无奈。。

  代码如下:

List<string> lstObjPath = new List<string>();        List<DirectoryInfo> lstDi = new List<DirectoryInfo>();        private void btnPath_Click(object sender, EventArgs e)        {            System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog();            dialog.Description = "请选择Code所在文件夹";            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)            {                this.DealWithDi(new DirectoryInfo(dialog.SelectedPath));                this.DealWithEmptyDi();                this.DealWithObjDi();            }        }        private void DealWithDi(DirectoryInfo objDi)        {            DirectoryInfo[] subDi = objDi.GetDirectories();            foreach (var item in subDi)            {                if (ckDelBin.Checked                    &&(item.Name == "obj" || item.Name == "bin"))                {                    lstObjPath.Add(item.FullName);                    continue;                }                lstDi.Add(item);                DealWithDi(item);            }        }
在选中了相应的文件目录后,递归找到所有的文件夹,如果要删除bin/obj文件夹,那么把它们加入到删除列表。

private void DealWithEmptyDi()        {            foreach (var item in lstDi)            {                if (Directory.GetDirectories(item.FullName).Length == 0 && Directory.GetFiles(item.FullName).Length == 0)                {                    FileStream fs1 = new FileStream(item.FullName + "/ignore.keep", FileMode.Create);                    fs1.Close();                }            }        }        private void DealWithObjDi()        {            foreach (var item in lstObjPath)            {                Directory.Delete(item, true);            }        }
递归完后,循环所有的文件夹,判断如果为空,则添加一个ignore.keep文件,最后再删掉所有删除列表中的文件夹。

好了,工具做完了,数十行代码而已,妈妈再也不用担心我的码云svn提交空文件夹问题了。


原创粉丝点击