Plugins/VcsPlugins/vcsGit/git.py

changeset 6324
b11c36cba2a1
parent 6303
ec9ebaf206fb
child 6508
51897256fc83
equal deleted inserted replaced
6323:610b676336be 6324:b11c36cba2a1
2785 (not forFetch) and mode == "(push)": 2785 (not forFetch) and mode == "(push)":
2786 remotesList.append((name, url)) 2786 remotesList.append((name, url))
2787 2787
2788 return remotesList 2788 return remotesList
2789 2789
2790 def gitGetRemoteUrl(self, repodir, remoteName):
2791 """
2792 Public method to get the URL of a remote repository.
2793
2794 @param repodir directory name of the repository
2795 @type str
2796 @param remoteName name of the remote repository
2797 @type str
2798 @return URL of the remote repository
2799 @rtype str
2800 """
2801 args = self.initCommand("remote")
2802 args.append("get-url")
2803 args.append(remoteName)
2804
2805 output = ""
2806 process = QProcess()
2807 process.setWorkingDirectory(repodir)
2808 process.start('git', args)
2809 procStarted = process.waitForStarted(5000)
2810 if procStarted:
2811 finished = process.waitForFinished(30000)
2812 if finished and process.exitCode() == 0:
2813 output = str(process.readAllStandardOutput(),
2814 Preferences.getSystem("IOEncoding"),
2815 'replace').strip()
2816
2817 return output
2818
2790 def gitGetRemoteBranchesList(self, repodir, remote): 2819 def gitGetRemoteBranchesList(self, repodir, remote):
2791 """ 2820 """
2792 Public method to get the list of a remote repository branches. 2821 Public method to get the list of a remote repository branches.
2793 2822
2794 @param repodir directory name of the repository (string) 2823 @param repodir directory name of the repository (string)
2906 args.append(remoteName) 2935 args.append(remoteName)
2907 args.append(newName) 2936 args.append(newName)
2908 2937
2909 self.startSynchronizedProcess(QProcess(), "git", args, 2938 self.startSynchronizedProcess(QProcess(), "git", args,
2910 workingDir=repodir) 2939 workingDir=repodir)
2940
2941 def gitChangeRemoteUrl(self, projectDir, remoteName, remoteUrl=""):
2942 """
2943 Public method to change the URL of a remote repository.
2944
2945 @param projectDir name of the project directory
2946 @type str
2947 @param remoteName name of the remote repository
2948 @type str
2949 @param remoteUrl URL of the remote repository
2950 @type str
2951 """
2952 # find the root of the repo
2953 repodir = projectDir
2954 while not os.path.isdir(os.path.join(repodir, self.adminDir)):
2955 repodir = os.path.dirname(repodir)
2956 if os.path.splitdrive(repodir)[1] == os.sep:
2957 return
2958
2959 if not remoteUrl:
2960 remoteUrl = self.gitGetRemoteUrl(repodir, remoteName)
2961
2962 from .GitChangeRemoteUrlDialog import GitChangeRemoteUrlDialog
2963 dlg = GitChangeRemoteUrlDialog(remoteName, remoteUrl)
2964 if dlg.exec_() == QDialog.Accepted:
2965 name, url = dlg.getData()
2966 if url != remoteUrl:
2967 args = self.initCommand("remote")
2968 args.append("set-url")
2969 args.append(name)
2970 args.append(url)
2971
2972 self.startSynchronizedProcess(QProcess(), "git", args,
2973 workingDir=repodir)
2974
2975 def gitChangeRemoteCredentials(self, projectDir, remoteName, remoteUrl=""):
2976 """
2977 Public method to change the user credentials of a remote repository.
2978
2979 @param projectDir name of the project directory
2980 @type str
2981 @param remoteName name of the remote repository
2982 @type str
2983 @param remoteUrl URL of the remote repository
2984 @type str
2985 """
2986 # find the root of the repo
2987 repodir = projectDir
2988 while not os.path.isdir(os.path.join(repodir, self.adminDir)):
2989 repodir = os.path.dirname(repodir)
2990 if os.path.splitdrive(repodir)[1] == os.sep:
2991 return
2992
2993 if not remoteUrl:
2994 remoteUrl = self.gitGetRemoteUrl(repodir, remoteName)
2995
2996 from .GitRemoteCredentialsDialog import GitRemoteCredentialsDialog
2997 dlg = GitRemoteCredentialsDialog(remoteName, remoteUrl)
2998 if dlg.exec_() == QDialog.Accepted:
2999 name, url = dlg.getData()
3000 if url != remoteUrl:
3001 args = self.initCommand("remote")
3002 args.append("set-url")
3003 args.append(name)
3004 args.append(url)
3005
3006 self.startSynchronizedProcess(QProcess(), "git", args,
3007 workingDir=repodir)
2911 3008
2912 def gitRemoveRemote(self, projectDir, remoteName): 3009 def gitRemoveRemote(self, projectDir, remoteName):
2913 """ 3010 """
2914 Public method to remove a remote repository. 3011 Public method to remove a remote repository.
2915 3012

eric ide

mercurial