KiCad PCB EDA Suite
Loading...
Searching...
No Matches
git_backend.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.TXT for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 3
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/gpl-3.0.html
19 * or you may search the http://www.gnu.org website for the version 3 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#ifndef GIT_BACKEND_H_
25#define GIT_BACKEND_H_
26
27#include <map>
28#include <import_export.h>
29#include <set>
30#include <vector>
31#include <wx/string.h>
32
44struct RemoteConfig;
45struct git_repository;
46enum class InitResult;
47enum class BranchResult;
48enum class PullResult;
49struct FileStatus;
50enum class PushResult;
51
52// Commit result shared across backend and handlers
59
61{
62public:
63 virtual ~GIT_BACKEND() = default;
64
65 virtual void Init() = 0;
66 virtual void Shutdown() = 0;
67
68 // Whether the libgit2 library is available/initialized enough for use
69 virtual bool IsLibraryAvailable() = 0;
70
71 virtual bool Clone( GIT_CLONE_HANDLER* aHandler ) = 0;
72
74 const std::vector<wxString>& aFiles,
75 const wxString& aMessage,
76 const wxString& aAuthorName,
77 const wxString& aAuthorEmail ) = 0;
78
79 virtual PushResult Push( GIT_PUSH_HANDLER* aHandler ) = 0;
80
81 virtual bool HasChangedFiles( GIT_STATUS_HANDLER* aHandler ) = 0;
82
83 virtual std::map<wxString, FileStatus> GetFileStatus( GIT_STATUS_HANDLER* aHandler,
84 const wxString& aPathspec ) = 0;
85
86 virtual wxString GetCurrentBranchName( GIT_STATUS_HANDLER* aHandler ) = 0;
87
88 virtual void UpdateRemoteStatus( GIT_STATUS_HANDLER* aHandler,
89 const std::set<wxString>& aLocalChanges,
90 const std::set<wxString>& aRemoteChanges,
91 std::map<wxString, FileStatus>& aFileStatus ) = 0;
92
93 virtual wxString GetWorkingDirectory( GIT_STATUS_HANDLER* aHandler ) = 0;
94
95 virtual wxString GetWorkingDirectory( GIT_CONFIG_HANDLER* aHandler ) = 0;
96 virtual bool GetConfigString( GIT_CONFIG_HANDLER* aHandler, const wxString& aKey,
97 wxString& aValue ) = 0;
98
99 virtual bool IsRepository( GIT_INIT_HANDLER* aHandler, const wxString& aPath ) = 0;
100 virtual InitResult InitializeRepository( GIT_INIT_HANDLER* aHandler, const wxString& aPath ) = 0;
101 virtual bool SetupRemote( GIT_INIT_HANDLER* aHandler, const RemoteConfig& aConfig ) = 0;
102
103 virtual BranchResult SwitchToBranch( GIT_BRANCH_HANDLER* aHandler, const wxString& aBranchName ) = 0;
104 virtual bool BranchExists( GIT_BRANCH_HANDLER* aHandler, const wxString& aBranchName ) = 0;
105
106 virtual bool PerformFetch( GIT_PULL_HANDLER* aHandler, bool aSkipLock ) = 0;
107 virtual PullResult PerformPull( GIT_PULL_HANDLER* aHandler ) = 0;
108
109 virtual void PerformRevert( GIT_REVERT_HANDLER* aHandler ) = 0;
110
111 virtual git_repository* GetRepositoryForFile( const char* aFilename ) = 0;
112 virtual int CreateBranch( git_repository* aRepo, const wxString& aBranchName ) = 0;
113 virtual bool RemoveVCS( git_repository*& aRepo, const wxString& aProjectPath,
114 bool aRemoveGitDir, wxString* aErrors ) = 0;
115
116 virtual bool AddToIndex( GIT_ADD_TO_INDEX_HANDLER* aHandler, const wxString& aFilePath ) = 0;
117
118 virtual bool PerformAddToIndex( GIT_ADD_TO_INDEX_HANDLER* aHandler ) = 0;
119
120 virtual bool RemoveFromIndex( GIT_REMOVE_FROM_INDEX_HANDLER* aHandler, const wxString& aFilePath ) = 0;
121
123};
124
126APIEXPORT void SetGitBackend( GIT_BACKEND* aBackend );
127
128#endif
virtual void PerformRevert(GIT_REVERT_HANDLER *aHandler)=0
virtual bool PerformAddToIndex(GIT_ADD_TO_INDEX_HANDLER *aHandler)=0
virtual InitResult InitializeRepository(GIT_INIT_HANDLER *aHandler, const wxString &aPath)=0
virtual bool IsLibraryAvailable()=0
virtual bool GetConfigString(GIT_CONFIG_HANDLER *aHandler, const wxString &aKey, wxString &aValue)=0
virtual void Shutdown()=0
virtual void PerformRemoveFromIndex(GIT_REMOVE_FROM_INDEX_HANDLER *aHandler)=0
virtual ~GIT_BACKEND()=default
virtual void Init()=0
virtual PullResult PerformPull(GIT_PULL_HANDLER *aHandler)=0
virtual wxString GetWorkingDirectory(GIT_STATUS_HANDLER *aHandler)=0
virtual bool IsRepository(GIT_INIT_HANDLER *aHandler, const wxString &aPath)=0
virtual bool Clone(GIT_CLONE_HANDLER *aHandler)=0
virtual bool BranchExists(GIT_BRANCH_HANDLER *aHandler, const wxString &aBranchName)=0
virtual wxString GetWorkingDirectory(GIT_CONFIG_HANDLER *aHandler)=0
virtual int CreateBranch(git_repository *aRepo, const wxString &aBranchName)=0
virtual std::map< wxString, FileStatus > GetFileStatus(GIT_STATUS_HANDLER *aHandler, const wxString &aPathspec)=0
virtual bool AddToIndex(GIT_ADD_TO_INDEX_HANDLER *aHandler, const wxString &aFilePath)=0
virtual BranchResult SwitchToBranch(GIT_BRANCH_HANDLER *aHandler, const wxString &aBranchName)=0
virtual PushResult Push(GIT_PUSH_HANDLER *aHandler)=0
virtual bool RemoveVCS(git_repository *&aRepo, const wxString &aProjectPath, bool aRemoveGitDir, wxString *aErrors)=0
virtual bool RemoveFromIndex(GIT_REMOVE_FROM_INDEX_HANDLER *aHandler, const wxString &aFilePath)=0
virtual wxString GetCurrentBranchName(GIT_STATUS_HANDLER *aHandler)=0
virtual git_repository * GetRepositoryForFile(const char *aFilename)=0
virtual bool PerformFetch(GIT_PULL_HANDLER *aHandler, bool aSkipLock)=0
virtual void UpdateRemoteStatus(GIT_STATUS_HANDLER *aHandler, const std::set< wxString > &aLocalChanges, const std::set< wxString > &aRemoteChanges, std::map< wxString, FileStatus > &aFileStatus)=0
virtual CommitResult Commit(GIT_COMMIT_HANDLER *aHandler, const std::vector< wxString > &aFiles, const wxString &aMessage, const wxString &aAuthorName, const wxString &aAuthorEmail)=0
virtual bool HasChangedFiles(GIT_STATUS_HANDLER *aHandler)=0
virtual bool SetupRemote(GIT_INIT_HANDLER *aHandler, const RemoteConfig &aConfig)=0
APIEXPORT void SetGitBackend(GIT_BACKEND *aBackend)
CommitResult
Definition git_backend.h:54
APIEXPORT GIT_BACKEND * GetGitBackend()
InitResult
PullResult
PushResult
#define APIEXPORT
Macros which export functions from a DLL/DSO.