dl
dl_svn.h
浏览该文件的文档.
1
2//* @file dl_svn.h
3//* @brief svn命令封装
4//*
5//
6//* @version 1.0
7//* @author lveyou
8//* @date 24-04-12
9//*
10//* @note
11//*/
12//#pragma once
13//
14//#include "system/dl_process.h"
15//
16//namespace dl
17//{
18// //! svn命令封装
19// class Svn
20// {
21// friend class SvnManager;
22// public:
23// enum class WorkType
24// {
25// NONE,
26// CHECKOUT,
27// UPDATE,
28// ADD,
29// COMMIT,
30// CLEANUP
31// };
32// static std::string_view GetWorkTypeName(WorkType type);
33// struct Work
34// {
35// WorkType _type;
36// std::string _url;
37// std::string _path;
38// std::vector<std::string> _vecAdd;
39//
40// std::string_view GetTypeName() const
41// {
42// return GetWorkTypeName(_type);
43// }
44// };
45// // 工作线程
46// struct ThreadWork
47// {
48// Thread* _t;
49// Process::ExecMultiData* _data;
50// ThreadWork()
51// {
52// _t = g_thread->Create();
53// _data = new Process::ExecMultiData;
54// _data->_thread = _t;
55// }
56// ~ThreadWork()
57// {
58// delete _t;
59// Process::Terminate(_data);
60// delete _data;
61// }
62// };
63// // 设置仓库地址
64// void SetUrl(std::string_view url) { _url = url; }
65// // 设置工作路径
66// void SetPath(std::string_view path) { _path = path; }
67// // 设置账号密码
68// void SetAccount(std::string_view username, std::string_view password, bool save_account)
69// {
70// _username = username;
71// _password = password;
72// _bSaveAccount = save_account;
73// }
74// // 设置提交注释
75// void SetComment(std::string_view comment) { _comment = comment; }
76// // 检出
77// void Checkout();
78// // 更新
79// void Update();
80// // 添加(传入子目录)
81// void Add(const std::vector<std::string>& vec_path);
82// // 提交
83// void Commit();
84// // 清理
85// void Cleanup();
86//
87// void DoWorkLast();
88//
89// const ThreadWork& GetThreadWork() { return _work; }
90// std::string GetUrl() { return _url; }
91// std::string GetPath() { return _path; }
92//
93// const Work& GetWork() { return _workCurrent; }
94// const Work& GetWorkLast() { return _workLast; }
95// void* GetUserData() { return _userData; }
96//
97// Svn() :
98// _bSaveAccount{ false },
99// _userData{ nullptr }
100// {
101// _workLast._type = WorkType::NONE;
102// }
103// ~Svn();
104// private:
105// std::string _url;
106// std::string _path;
107// std::string _username;
108// std::string _password;
109// std::string _comment;// 提交日志
110// bool _bSaveAccount;
111//
112// ThreadWork _work;// 只开一个线程
113//
114// Work _workLast;
115// Work _workCurrent;
116//
117// void* _userData;
118// };
119// //! svn管理器
120// class SvnManager
121// {
122// public:
123// Svn* Create(std::string_view url, std::string_view path, void* user_data)
124// {
125// assert(!Has(url, path));
126//
127// Svn* ret = new Svn;
128// ret->_userData = user_data;
129// ret->_url = url;
130// ret->_path = path;
131// _allSvn.push_back(ret);
132// return ret;
133// }
134// // 不同时下载同一个URL或者本存保存路径
135// bool Has(std::string_view url, std::string_view path)
136// {
137// for (Svn* svn : _allSvn)
138// {
139// if (svn->_url == url
140// || svn->_path == path)
141// return true;
142// }
143// return false;
144// }
145//
146// // 初始化,设置svn.exe路径
147// bool Init(std::string_view svn_path);
148// bool IsInit() { return !_exe.empty(); }
149// //
150// std::string GetPathExe()
151// {
152// return _exe;
153// }
154//
155// // 遍历时禁止删除
156// const std::list<Svn*>& GetAllSvn()
157// {
158// return _allSvn;
159// }
160//
161// void _remove_ref(Svn* svn)
162// {
163// auto iter = std::find(_allSvn.begin(), _allSvn.end(), svn);
164// assert(iter != _allSvn.end());
165// if (iter != _allSvn.end())
166// {
167// _allSvn.erase(iter);
168// }
169// }
170// private:
171// std::string _exe;
172// std::list<Svn*> _allSvn;
173// };
174// extern SvnManager* g_svn;
175//}
176//