KiCad PCB EDA Suite
Loading...
Searching...
No Matches
libgit_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 LIBGIT_BACKEND_H_
25#define LIBGIT_BACKEND_H_
26
27#include "git_backend.h"
28#include <import_export.h>
29
30// Forward declarations to avoid exposing libgit2 headers
31struct git_annotated_commit;
32
34{
35public:
36 void Init() override;
37 void Shutdown() override;
38 bool IsLibraryAvailable() override;
39
40 bool Clone( GIT_CLONE_HANDLER* aHandler ) override;
41
43 const std::vector<wxString>& aFiles,
44 const wxString& aMessage,
45 const wxString& aAuthorName,
46 const wxString& aAuthorEmail ) override;
47
48 PushResult Push( GIT_PUSH_HANDLER* aHandler ) override;
49
50 bool HasChangedFiles( GIT_STATUS_HANDLER* aHandler ) override;
51
52 std::map<wxString, FileStatus> GetFileStatus( GIT_STATUS_HANDLER* aHandler,
53 const wxString& aPathspec ) override;
54
55 wxString GetCurrentBranchName( GIT_STATUS_HANDLER* aHandler ) override;
56
58 const std::set<wxString>& aLocalChanges,
59 const std::set<wxString>& aRemoteChanges,
60 std::map<wxString, FileStatus>& aFileStatus ) override;
61
62 wxString GetWorkingDirectory( GIT_STATUS_HANDLER* aHandler ) override;
63
64 wxString GetWorkingDirectory( GIT_CONFIG_HANDLER* aHandler ) override;
65 bool GetConfigString( GIT_CONFIG_HANDLER* aHandler, const wxString& aKey,
66 wxString& aValue ) override;
67
68 bool IsRepository( GIT_INIT_HANDLER* aHandler, const wxString& aPath ) override;
69 InitResult InitializeRepository( GIT_INIT_HANDLER* aHandler, const wxString& aPath ) override;
70 bool SetupRemote( GIT_INIT_HANDLER* aHandler, const RemoteConfig& aConfig ) override;
71
72 BranchResult SwitchToBranch( GIT_BRANCH_HANDLER* aHandler, const wxString& aBranchName ) override;
73 bool BranchExists( GIT_BRANCH_HANDLER* aHandler, const wxString& aBranchName ) override;
74
75 bool PerformFetch( GIT_PULL_HANDLER* aHandler, bool aSkipLock ) override;
76 PullResult PerformPull( GIT_PULL_HANDLER* aHandler ) override;
77
78 void PerformRevert( GIT_REVERT_HANDLER* aHandler ) override;
79
80 git_repository* GetRepositoryForFile( const char* aFilename ) override;
81 int CreateBranch( git_repository* aRepo, const wxString& aBranchName ) override;
82 bool RemoveVCS( git_repository*& aRepo, const wxString& aProjectPath,
83 bool aRemoveGitDir, wxString* aErrors ) override;
84
85 bool AddToIndex( GIT_ADD_TO_INDEX_HANDLER* aHandler, const wxString& aFilePath ) override;
86
87 bool PerformAddToIndex( GIT_ADD_TO_INDEX_HANDLER* aHandler ) override;
88
89 bool RemoveFromIndex( GIT_REMOVE_FROM_INDEX_HANDLER* aHandler, const wxString& aFilePath ) override;
90
92
93private:
95 PullResult handleMerge( GIT_PULL_HANDLER* aHandler, const git_annotated_commit** aMergeHeads,
96 size_t aMergeHeadsCount );
97 PullResult handleRebase( GIT_PULL_HANDLER* aHandler, const git_annotated_commit** aMergeHeads,
98 size_t aMergeHeadsCount );
99};
100
101#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 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 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
PullResult handleMerge(GIT_PULL_HANDLER *aHandler, const git_annotated_commit **aMergeHeads, size_t aMergeHeadsCount)
PullResult handleRebase(GIT_PULL_HANDLER *aHandler, const git_annotated_commit **aMergeHeads, size_t aMergeHeadsCount)
PullResult handleFastForward(GIT_PULL_HANDLER *aHandler)
CommitResult
Definition git_backend.h:54
InitResult
PullResult
PushResult
#define APIEXPORT
Macros which export functions from a DLL/DSO.