SVN 创建分支

2种方法:

创建分支之前一定要先更新到最新版本。

1.你用tortoiseSVN点版本库浏览,在需要建立分支的路径(比如trunk)点copy to + 新分支名称(注意:必须与trunk不能同名,你可以新建一个名称比如branch),然后在分支下面update

2.tortoiseSVN点版本库浏览,你在需要创建的路径下右键tortoiseSVN 选择create folder 然后创建新路径名称(文件夹)然后把主干或者其他分支路径的代码(拉分支这种情况估计想并行开发)导入到这个路径下就可以了。,然后在分支下面update

创建分支是否成功,在分支文件夹里面 TortoiseSVN  ---->版本库浏览器  定位的是分支路径那就对了,如果还是主干路径那创建分支就有问题了。

注意:1、如果分支目录在没有分支的情况下check out下来的项目,这时候工作副本对应版本库的路径仍为原来对应的主干的目录。所以在客户端文本夹中删除之后 再从服务器Update分支的项目。不能用客户端SVN delete,这样会删除主干上的项目。

2、如果是多个项目,只保留几个项目做分支,那就从版本库浏览器中分支的项目右键删除,不能从本地svn delete,这样会删除主干上的项目。

修改相关文件项目名,这样就能引入eclipse 了

/gjmj/mallv2/branchs/gjmj_20141110/shop/.classpath

/gjmj/mallv2/branchs/gjmj_20141110/shop/.project

/gjmj/mallv2/branchs/gjmj_20141110/shop/WebRoot/WEB-INF/web.xml

/gjmj/mallv2/branchs/gjmj_20141110/shop/config/boot.xml

/gjmj/mallv2/branchs/gjmj_20141110/shop/config/ui/path.xml

下面修改相关文件项目名的代码根据具体需要改动

import java.io.BufferedReader;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 1、修改多个项目的路径,以便导入eclipse
 * 2、全部替换gjmj_20141110为分支文件夹
 * @author Coco
 *
 */
public class FileContentReplace {
 private static String REPLACE_SRC_FILE = "E:\\workspaces\\gjmj\\mallv2\\branchs\\gjmj_20141110";
 private static String REPLACE_EXCLUDE_FILE = "E:\\Workspaces\\gjmj\\mallv2\\branchs\\gjmj_20141110\\core\\WebRoot\\sr;E:\\Workspaces\\gjmj\\mallv2\\branchs\\gjmj_20141110\\core\\WebRoot\\upload;E:\\Workspaces\\gjmj\\mallv2\\branchs\\gjmj_20141110\\core\\WebRoot\\WEB-INF\\lib;toruk.xml";

 private static String REPLACE_CONTENT = "gjmj_mallv2->gjmj_20141110;E:/Workspaces/gjmj/mallv2/project/->E:/Workspaces/gjmj/mallv2/branchs/gjmj_20141110/;E:/workspaces/gjmj/mallv2/project/->E:/workspaces/gjmj/mallv2/branchs/gjmj_20141110/";

 public static List<String> EXCLUDE_FILE_LIST = null;

 public static Map<String,String> getReplaceMaping()  {
   Map<String,String> map = new HashMap<String,String>();
   if(REPLACE_CONTENT!=null){
     String[] repContentArr = REPLACE_CONTENT.split(";");
     for(String repMap:repContentArr){
       String[] arg = repMap.split("->");
       if(arg.length!=2){
         throw new RuntimeException(repMap+"不正确");
       }else{
         map.put(arg[0], arg[1]);
       }
     }
   }
   return map;
 }

 public static List<String> excludeFileList(){
   if(EXCLUDE_FILE_LIST==null){
     EXCLUDE_FILE_LIST = new ArrayList<String>();
     if(REPLACE_EXCLUDE_FILE!=null){
       String[] strArr = REPLACE_EXCLUDE_FILE.split(";");
       for(String str:strArr){
         EXCLUDE_FILE_LIST.add(str.trim());
       }
     }
     return EXCLUDE_FILE_LIST;
   }else{
    return EXCLUDE_FILE_LIST;
   }
 }
 public static void handFile(File infile,String fromCharSet,String toCharSet) throws Exception{
      if(infile.getName().equals(".svn")){
        return;
      }
      if(infile.getName().contains("!")){
        return;
      }
      for(String excludeFile:excludeFileList()){
        if(infile.getPath().toLowerCase().contains(excludeFile.toLowerCase())||infile.getName().equals(excludeFile)){
          return;
        }
      }

      BufferedReader in = new BufferedReader(new InputStreamReader(
      new FileInputStream(infile), fromCharSet));
      String reading;
      String  content = "";
      while ((reading = in.readLine()) != null) {
        content +=reading+"\r\n";
      }
      boolean flag = false;
      Map<String,String> replaceMapping = getReplaceMaping();
      if(replaceMapping!=null){
        Set<Map.Entry<String, String>> replaceEntrys =   replaceMapping.entrySet();
        for(Iterator<Map.Entry<String, String>> it = replaceEntrys.iterator();it.hasNext();){
          Map.Entry<String, String> entry = it.next();
          String key = entry.getKey();
          if(content.contains(key)){
            flag = true;
          }
        }
      }

      if(flag){
        File outfile = new File(infile + ".tmp");
        PrintWriter out = new PrintWriter(new BufferedWriter(
        new OutputStreamWriter(new FileOutputStream(outfile), toCharSet)));

        if(replaceMapping!=null){
          Set<Map.Entry<String, String>> replaceEntrys =   replaceMapping.entrySet();
          for(Iterator<Map.Entry<String, String>> it = replaceEntrys.iterator();it.hasNext();){
            Map.Entry<String, String> entry = it.next();
            String key = entry.getKey();
            String value = entry.getValue();
            content = content.replaceAll(key, value);
          }
          System.out.println("替换文件:"+infile.getPath());
        }

        out.println(content);
        out.flush();
        out.close();
        in.close();
        infile.delete();
        outfile.renameTo(infile);
      }else{
        in.close();
      }

  }

  public static void main(String[] args) throws Exception {
     replaceFile(new File(REPLACE_SRC_FILE),"UTF-8","UTF-8");
  }

  public static void replaceFile(File filePath,String fromCharSet,String toCharSet) throws Exception{
    if(filePath.exists()==false){
      new RuntimeException(filePath.getPath()+"不存在");
    }

    if(filePath.getName().equals(".svn")){
      return;
    }
    for(String excludeFile:excludeFileList()){
      if(filePath.getPath().toLowerCase().contains(excludeFile.toLowerCase())){
        return;
      }
    }

    if(filePath.isDirectory()){
      File[] childFiles = filePath.listFiles();
      if(childFiles!=null){
        for(File childFile:childFiles){
          if(childFile.isFile()){
            handFile(childFile,fromCharSet, toCharSet);
          }else{
            replaceFile(childFile,fromCharSet, toCharSet);
          }
        }
      }
    }else{
      handFile(filePath,fromCharSet, toCharSet);
    }
  }
}
时间: 2024-08-29 04:23:55

SVN 创建分支的相关文章

SVN创建分支/合并分支/切换分支

SVN创建分支/合并分支/切换分支 转载自:http://www.cnblogs.com/andy2simple/p/5386256.html 在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录.这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方. branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本,也可以放在分支中

windows 下svn 创建分支 合并分支 冲突

我用的系统是win7+Subversion 1.7.4.服务器搭建就略过了,我也是从网上找的,基本上就是几个命令吧!我用的CentOs6.5 .网上找了几个命令搭建很快,基本上是: 1.# sudo yum install subversion 2.# sudo mkdir -p /subroot 3.# sudo svnadmin create /subroot 4.# sudo vi /subroot/conf/authz 尾部加 [/]dan=rww=r 5.# sudo vi /subr

svn 创建分支、切换分支 及 合并分支 操作

关联远程仓库: 右键  ---  点击 ' SVN Checkout...' 生成 打开trunk目录,在trunk目录下新建两个文本文件A.java,B.java: 打开A.java输入以下内容: B.java文件可以随机输入些,本例中主要用于观察后续是否变化. 两个文件编辑完成后使用SVN Commit将更改提交到SVN: 下面开始创建分支: 1.在trunk上点击右键,在TortoiseSVN菜单中选择Branch/Tag; 2.在To path输入框中输入新建分支的路径,一般是:/bra

SVN创建分支

工具:TortoiseSVN 创建一个空白项目,例如OA 从客户端检出OA,在OA文件夹下新建三个子文件夹 trunk:存放开发的主线,团队成员在开发的时候一直要用这个库中的内容 branches:存放支线副本:当项目稳定以后,先发布到tags下,如果发现了bug,再从tags下检出到branches下.在该版本下进行bug的修复,把修复完毕的稳定的版本重新发布到tags下. tags:存放标签副本,也就是存放稳定版本 将文件夹导入仓库 导入后查看仓库结构是否导入成功 将一个正在开发的项目导入t

svn branch 创建分支

一.意义 创建分支的意义,比如我们在一个基础平台上进行开发,每个技术小组负责一个子项目,而基础平台也是有可能会继续更改的,这个时候,如果不创建分支,子项目之间会相互影响,影响最大的就是后期的测试和版本发布,子项目A已经结束,但测试却受到正在进行的子项目B的影响,测试通不过,就别说版本发布了.所以,我们需要从目前的项目(主干trunk)中创建分支(branch),隔离子项目间的相互影响. 二.创建分支原理 在svn中,创建分支,实际上就是一个版本拷贝(对应copy to...注意:绝不是简单在客户

ECLIPSE下SVN的创建分支/合并/切换使用

最近接项目要求,要在svn主干上创建分支,用分支来进行程序的bug修改,而主干上进行新功能的开发.分支上的bug修改完,发布后,可以合并到主干上.项目程序可以在主干和分支之间进行切换,来实现主干和分支的同时维护. 1.创建分支 创建分支实际上就是将程序copy一份到指定的分支目录,如下图示: 在项目名称上点击右键,弹出菜单,选择"Team",再选择"Branch/Tag",弹出下面的页面: 上图中的"Copy to URL"填写创建新分支的路径地

转 Eclipse下svn的创建分支/合并/切换使用

最近接项目要求,要在svn主干上创建分支,用分支来进行程序的bug修改,而主干上进行新功能的开发.分支上的bug修改完,发布后,可以合并到主干上.项目程序可以在主干和分支之间进行切换,来实现主干和分支的同时维护.  1.创建分支 创建分支实际上就是将程序copy一份到指定的分支目录,如下图示: 在项目名称上点击右键,弹出菜单,选择“Team”,再选择“Branch/Tag”,弹出下面的页面: 上图中的“Copy to URL”填写创建新分支的路径地址,后面会将程序copy到该目录下,形成新的分支

SVN管理工具Cornerstone之:创建分支、提交合并

创建工程的分支: 步骤: 1.选择左下角仓库repositories中的工程名->选择trunk->点击Branch->在提示框里填写分支名称create, 2.在做上角working copies中选择对应的工程名,点击update进行更新下载 3.以上步骤就完成了分支的创建 分支的提交 1.分支完成后,可以选择提交整个分支,也可以选择提交分支中changes的文件 2.选则完成后,点击工具栏中的commit,填写更改的log 分支的合并 3.选择trunk,点击工具栏中的Merge

SVN创建资源与分支详解

创建分支的意义: 简单说,分支就是用于区分开发版本与当前发布版本的. 1. 主干负责新功能的开发 2..分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发) 3..分支上修改的bug,经常性merge到主干上,尽量及时merge(避免大面积红色区域). 4..只能分支往主干靠拢(merge),不能反向! 5..直到下个新版本发布,该分支停止修改 1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subv