`
dannyhz
  • 浏览: 392963 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

git也有java的api包 可以方便的用java操作提交 建分支的代码管理活动

    博客分类:
  • git
 
阅读更多
http://www.cnblogs.com/songshu120/p/6180747.html


public class GitUtilClass {
    public static String localRepoPath = "D:/repo";
    public static String localRepoGitConfig = "D:/repo/.git";
    public static String remoteRepoURI = "git@gitlab.com:wilson/test.git";
    public static String localCodeDir = "D:/platplat";
    
    /**
     * 新建一个分支并同步到远程仓库
     * @param branchName
     * @throws IOException
     * @throws GitAPIException
     */
    public static String newBranch(String branchName){
        String newBranchIndex = "refs/heads/"+branchName;
        String gitPathURI = "";
        Git git;
        try {
            
            //检查新建的分支是否已经存在,如果存在则将已存在的分支强制删除并新建一个分支
            List<Ref> refs = git.branchList().call();
            for (Ref ref : refs) {
                if (ref.getName().equals(newBranchIndex)) {
                    System.out.println("Removing branch before");
                    git.branchDelete().setBranchNames(branchName).setForce(true)
                            .call();
                    break;
                }
            }            
            //新建分支
            Ref ref = git.branchCreate().setName(branchName).call();
            //推送到远程
            git.push().add(ref).call();
            gitPathURI = remoteRepoURI + " " + "feature/" + branchName;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (GitAPIException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return gitPathURI;                
    }
    
    public static void commitFiles() throws IOException, GitAPIException{
        String filePath = "";
        Git git = Git.open( new File(localRepoGitConfig) );
        //创建用户文件的过程
        File myfile = new File(filePath);
        myfile.createNewFile();
        git.add().addFilepattern("pets").call();   
        //提交
        git.commit().setMessage("Added pets").call();   
        //推送到远程
        git.push().call();
    }
    
    public static boolean pullBranchToLocal(String cloneURL){
        boolean resultFlag = false;
        String[] splitURL = cloneURL.split(" ");
        String branchName = splitURL[1];
        String fileDir = localCodeDir+"/"+branchName;
        //检查目标文件夹是否存在
        File file = new File(fileDir);
        if(file.exists()){
            deleteFolder(file);
        }
        Git git;
        try {
            git = Git.open( new File(localRepoGitConfig) );
            git.cloneRepository().setURI(cloneURL).setDirectory(file).call();
            resultFlag = true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (GitAPIException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return resultFlag;    
    }
    
    public static void deleteFolder(File file){
        if(file.isFile() || file.list().length==0){
            file.delete();
        }else{
            File[] files = file.listFiles();
            for(int i=0;i<files.length;i++){
                deleteFolder(files[i]);
                files[i].delete();
            }
        }
    }
    
    public static void setupRepo() throws GitAPIException{
        //建立与远程仓库的联系,仅需要执行一次
        Git git = Git.cloneRepository().setURI(remoteRepoURI).setDirectory(new File(localRepoPath)).call();
    }
    
}
分享到:
评论

相关推荐

    redmine-java-api

    这个API使得开发者能够使用Java语言与Redmine服务器进行交互,执行各种操作,如创建、更新和管理项目、任务、问题等。 **描述解读:** 描述指出,这是一个开源的Java API,它的主要功能是允许开发人员通过编写Java...

    pure java git solution.zip

    总结起来,"pure java git solution.zip"很可能是一个基于Java的Git库实现或示例项目,其中的"my_source"文件夹包含了用Java编写的Git操作代码,涵盖了Git的各种核心功能,如仓库管理、文件操作、分支和远程操作等。...

    提供JGit Java Git实现的示例和代码片段.zip

    JGit是一个用Java编写的开放源码库,它实现了Git版本控制系统的核心功能,可以在Java环境中进行Git操作。这个压缩包“提供JGit Java Git实现的示例和代码片段.zip”显然是为了帮助开发者更好地理解和使用JGit。让...

    GItTest_rocket5vc_torntme_使用Java操作GIT仓库_

    "GItTest_rocket5vc_torntme_使用Java操作GIT仓库_"这个标题表明我们将讨论如何使用Java来操作Git仓库,结合描述,我们主要会探讨如何进行上传、下载、更新和推送等基本操作。"rocket5vc"和"torntme"可能是项目或...

    Android的Git客户端 Agit.zip

    Agit是一款专为Android平台设计的开源Git客户端,它使得用户在移动设备上可以方便地管理Git仓库,进行版本控制操作。作为一个基于Java开发的应用,Agit充分利用了Android的特性,为开发者和Git用户提供了强大的功能...

    gitblit-1.9.1.rar

    GDK是Git的开发工具包,通常包含了用于开发和测试Git的必要组件,而Git客户端则用于与Git服务器进行交互,如克隆、拉取、推送代码等操作。 Gitblit的安装过程通常包括以下几个步骤: 1. 解压下载的rar文件,得到...

    gitblit-1.9.1.zip

    4. **仓库管理**:可以创建、删除和管理Git仓库,查看提交历史、分支、标签等信息。 5. **Web界面**:用户可以通过Web界面进行克隆、推送、拉取操作,查看代码差异,以及提交注释。 6. **实时更新**:仓库的更改会...

    基于Java的实例开发源码-github-Java-api.zip

    这个压缩包"dlinsin-github-java-api-5f7e387"可能包含了某个特定版本或分支的代码,其中"5f7e387"很可能是Git仓库中的一个提交哈希值,用于追踪代码历史中的特定状态。 首先,我们要理解Java API是什么。Java API...

    java-gitlab-api:用Java编写的Gitlab API的包装器

    这个库使得Java开发者能够方便地在他们的应用中集成GitLab的功能,比如管理仓库、用户、项目、分支、标签、里程碑等。GitLab是一个开源的Git仓库管理系统,提供了Web界面和丰富的API接口,用于版本控制和协作开发。 ...

    gitblit包,免安装,解压直接用

    - Git操作:团队成员可以使用Git客户端(如Git Bash、SourceTree等)进行克隆、提交、推送操作,与GitBlit托管的仓库进行交互。 - 监控:GitBlit的Web界面提供了一套实时更新的统计信息,帮助你跟踪仓库的活动和...

    java-parser-api-1.1.3.Final.zip

    4. **Git版本控制**:"json-transformer-master"表明项目使用Git进行版本管理,"master"分支代表了项目的主要开发路径,开发者可以基于此进行代码的克隆、分支、合并等操作。 5. **项目结构**:解压后的文件可能...

    gitblit及使用教程

    Gitblit是一款开源的、专为Git版本控制系统设计的轻量级...通过这个教程,你将能够成功地搭建和使用Gitblit,管理你的Git仓库,提升代码协作的效率。记得在实践中不断探索,利用Gitblit的全部功能来优化你的工作流程。

    gitblit-1.9.1

    它的核心特性是完全用Java编写,这使得Gitblit具备了跨平台的兼容性,能够在多种操作系统上顺畅运行,包括Windows、Linux和Mac OS等。Gitblit的设计初衷是为小型团队提供一个简单而集中的Git存储库托管解决方案,...

    java各种代码练习

    虽然未直接提及,但学习使用版本控制系统如Git对于协作和代码管理至关重要。初学者应了解如何提交、分支和合并代码。 8. **编译与调试**: 熟悉使用Javac编译器将源代码转换为可执行的.class文件,以及使用IDE如...

    java课程设计---学生信息管理系统 源代码

    Git可以帮助团队协作,记录代码更改,方便回滚和分支管理。 8. **文档** - **Javadoc**:Java提供了Javadoc工具,用于自动生成API文档,方便其他开发者理解和使用代码。 9. **软件工程实践** - **代码规范**:...

    git服务器 gitblit-1.8.0 for Windows

    Gitblit 是一款开源的 Git 管理工具,专为 Java 开发者设计,它提供了全面的功能,包括创建、浏览、管理和操作 Git 仓库。Gitblit 的最新版本为 1.8.0,特别适合在 Windows 操作系统上运行。在本文中,我们将深入...

    libsub libsub

    - **分支管理**: Git强大的分支功能使得开发人员可以独立开发新功能,然后通过`git merge`合并回主分支。 - **版本历史查看**: `git log`命令可以查看提交历史,便于追踪代码变更。 - **协作与冲突解决**: 当多人...

Global site tag (gtag.js) - Google Analytics