Ejemplo n.º 1
0
        //获取保存版本文件数据
        static void GetVer()
        {
            if (verNew == null)
            {
                Debug.LogError("先检查一下版本再生成");
                return;
            }
            if (verNew.Ver == ver.Ver)
            {
                Debug.LogError("版本无变化");
                return;
            }

            //保存数据
            verNew.SaveToPath(root);
            Debug.LogError("生成OK Ver:" + verNew.Ver);

            ver = verNew;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 通过路径,读取版本文件数据
        /// </summary>
        /// <param name="path"></param>
        public static VerManager Read(string path)
        {
            string p = Path.Combine(path, "allver.ver.txt");

            if (!File.Exists(p))
            {
                return(null);
            }

            //有文本数据
            string txt = File.ReadAllText(p, Encoding.UTF8);

            string[]   lines = txt.Split(new string[] { "\n", "\r" }, System.StringSplitOptions.RemoveEmptyEntries);
            VerManager ver   = new VerManager();

            foreach (string l in lines)
            {
                if (l.IndexOf("Ver:") == 0)
                {
                    //取得文件版本号
                    ver.Ver = int.Parse(l.Substring(4));
                }
                else
                {
                    //解析获得文件内容信息    组信息,hash,文件个数
                    string[] sp   = l.Split('|');
                    VerInfo  info = new VerInfo(sp[0]);
                    info.Read(ver.Ver, sp[1], int.Parse(sp[2]), path);

                    if (ver.Groups.ContainsKey(sp[0]))
                    {
                        ver.Groups[sp[0]] = info;
                    }
                    else
                    {
                        ver.Groups.Add(sp[0], info);
                    }
                }
            }

            return(ver);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 初始化版本号和文件路径信息
        /// </summary>
        static void InitVerAndPath()
        {
            //读取文件分组版本信息
            ver = VerManager.Read(root);
            if (ver == null)
            {
                //如果当前路径下面没有此版本文件组信息
                //初始化一个版本文件组信息

                ver = new VerManager();
                //获得根目录下面的文件夹名称
                string[] groups = Directory.GetDirectories(root);
                foreach (string g in groups)
                {
                    //移除根目录
                    string path = g.Replace(root, "").ToLower();
                    if (path.IndexOf("path") == 0 || path.Contains(".svn"))
                    {
                        continue;
                    }

                    VerInfo info = new VerInfo(path);
                    if (ver.Groups.ContainsKey(path))
                    {
                        ver.Groups[path] = info;
                    }
                    else
                    {
                        ver.Groups.Add(path, info);
                    }
                }

                //设置文件版本号
                ver.Ver = 0;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 检测文件版本信息
        /// </summary>
        static void CheckVer()
        {
            verNew = new VerManager();
            string[] groups = Directory.GetDirectories(root);

            //输出当前文件信息里面不包含的文件路径
            foreach (string g in groups)
            {
                //string path = g.Substring(2).ToLower();
                string path = g.Replace(root, "").ToLower();
                if (path.IndexOf("path") == 0 || path.Contains(".svn"))
                {
                    continue;
                }

                if (!ver.Groups.ContainsKey(path.Replace(root, "")))
                {
                    //如果文件数据里面不包含此文件组信息
                    Debug.LogError("目录未包含:" + path.Replace(root, "") + " 增加此数据 ");

                    ver.Groups.Add(path, new VerInfo(path));
                }
            }

            //标识出来各种操作的文件个数
            int delcount    = 0;
            int updatecount = 0;
            int addcount    = 0;

            foreach (var g in ver.Groups)
            {
                //存储获得文件组里所有文件的hash
                verNew.Groups[g.Key] = new VerInfo(g.Key);
                verNew.Groups[g.Key].GetHash();
                foreach (var f in g.Value.FileHash)
                {
                    //检测如果新的文件组hash表中没有 之前读取配置文件里面的文件hash,那么就认为此文件被删除掉了
                    if (!verNew.Groups[g.Key].FileHash.ContainsKey(f.Key))
                    {
                        Debug.LogError("文件被删除:" + g.Key + ":" + f.Key);
                        delcount++;
                    }
                    else
                    {
                        //如果文件的hash值不相同 更新文件hash值
                        string hash    = verNew.Groups[g.Key].FileHash[f.Key];
                        string oldHash = g.Value.FileHash[f.Key];

                        if (!string.Equals(hash, oldHash))
                        {
                            Debug.LogError("文件更新:" + g.Key + ":" + f.Key);
                            updatecount++;
                        }
                    }
                }

                //循环遍历 新获得的文件hash表数据,检测添加的文件个数
                foreach (var f in verNew.Groups[g.Key].FileHash)
                {
                    //如果原hash表不包含此文件数据,那么次数据就是新添加的数据
                    if (!g.Value.FileHash.ContainsKey(f.Key))
                    {
                        Debug.LogError("文件增加:" + g.Key + ":" + f.Key);
                        addcount++;
                    }
                }
            }

            if (addcount == 0 && delcount == 0 && updatecount == 0)
            {
                verNew.Ver = ver.Ver;
                Debug.LogError("无变化 ver=" + verNew.Ver);
            }
            else
            {
                //改变文件版本号,如果有文件数据改变
                verNew.Ver = ver.Ver + 1;
                Debug.LogError("检查变化结果 add:" + addcount + " remove:" + delcount + " update:" + updatecount);
                Debug.LogError("版本号变为:" + verNew.Ver);
            }
        }