管理SVN路径 (以及 显示/隐藏 特殊文件 )

项目开发的过程中,将已提交AppStore,并通过审核的项目单独建立一个目录,是个不错的习惯。

但是 Copy 整个工程文件夹会将里面的svn管理文件同时copy出来,

  这些管理文件通常情况下是隐藏的,

  这些管理文件使你不能够通过 SVN 的 Add 和 Commit 命令成功成功地为该整个工程在 Server 上面建立目录。

下面分步处理:

1. 在桌面上建立一个新的文件夹,比如glee,将整个工程所在的文件夹 copy 到这个文件夹里面. (具体路径名字随意)。

2. 打开 Mac 下的命令行工具 “终端”(Terminal),位于Application/Utilities下。

  输入: cd desktop 点回车,这时进入桌面目录, :

    

   输入 ls (查看当前目录的文件)

   输入 cd glee , 点击回车,进入 glee 文件夹, 此时假设该文件夹下面有两个普通文件 和 一个隐藏文件, 可以通过

        ls 命令查看显示情况为:

          

       Finder 中的显示情况为: 

           关于显示 Mac 下 Finder 中显示隐藏文件夹的方法,下文将描述。

        我们需要删除该文件夹里面隐藏的SVN管理文件: .svn 文件夹, 采用如下的命令:

     find . -name ".svn" | xargs rm -Rf

        即:

        

        此时的 Finder 显示情况为:

         

        此时, glee 目录以及子目录中的 .svn 文件夹都会被删掉

到此,就可以把 整个工程 拷贝到某个SVN 目录,上传到 Server 了。

 

 

附:   Finder 下面 显示、隐藏 特殊文件的方法:

     Windows 下面通过 “控制面板”等方法可以设置 “是否显示隐藏文件”, Linux / Unix / Mac 体系中出于 账户安全等方面的考虑,不能在 Finder 或 “系统偏好设置” 里面直接设置该属性。  一个方法是 可以通过终端(Terminal)来进行实现:

         1.  在终端输入:

              defaults write com.apple.Finder AppleShowAllFiles -bool True    

              

         2.  重启 Finder。

     按住 “option” 键, 对 Dock 上面的 Finder 点击鼠标左键不放,直到出现 “重新开启” 选项, 点击重新开启,即可,此时在Finder 中即可看到 隐藏的文件。

         同样, 隐藏 特殊文件的命令为:

     defaults write com.apple.Finder AppleShowAllFiles -bool False

当然也可以做点  Mac 下的小工具,进行一键隐藏、显示 特殊文件, ( 制作中,稍后上传....... )

转载于:https://www.cnblogs.com/meyers/archive/2011/12/10/2283254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,你需要使用 SVNKit 库中的 Java API。以下是大致的步骤: 1. 使用 SVNKit 库连接到 SVN 服务器,并获取指定路径下的所有变更日志。 ```java SVNURL url = SVNURL.parseURIEncoded(svnUrl); ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(svnUsername, svnPassword); SVNRepository repository = SVNRepositoryFactory.create(url); repository.setAuthenticationManager(authManager); long startRevision = repository.getLatestRevision() - 10; // 获取最近的10个版本 long endRevision = repository.getLatestRevision(); Collection<SVNLogEntry> logEntries = repository.log(new String[]{""}, null, startRevision, endRevision, true, true); ``` 2. 遍历变更日志,获取每个文件的变更信息,如果是 .java 文件则进行解析。 ```java for (SVNLogEntry logEntry : logEntries) { Map<String, SVNLogEntryPath> changedPaths = logEntry.getChangedPaths(); for (Map.Entry<String, SVNLogEntryPath> entry : changedPaths.entrySet()) { SVNLogEntryPath path = entry.getValue(); String filePath = path.getPath(); if (filePath.endsWith(".java") && (path.getType() == SVNLogEntryPath.TYPE_ADDED || path.getType() == SVNLogEntryPath.TYPE_MODIFIED)) { // 解析 .java 文件 } } } ``` 3. 对于每个修改的 .java 文件,使用 JavaParser 库解析出其 AST,并遍历 AST 找到修改的类。 ```java FileInputStream in = new FileInputStream(filePath); CompilationUnit cu = JavaParser.parse(in); List<TypeDeclaration<?>> types = cu.getTypes(); for (TypeDeclaration<?> type : types) { if (type instanceof ClassOrInterfaceDeclaration) { ClassOrInterfaceDeclaration classDeclaration = (ClassOrInterfaceDeclaration) type; String className = classDeclaration.getNameAsString(); // 判断该类是否被修改 if (isClassModified(className, logEntry)) { // 处理修改的类 } } } ``` 4. 判断该类是否被修改,可以使用 SVNKit 的 `SVNLogEntryPath` 中的 `getCopyPath()` 和 `getCopyRevision()` 方法来判断该文件是否是复制或重命名,以及其所复制或重命名的文件是否在当前变更集中。 ```java private boolean isClassModified(String className, SVNLogEntry logEntry) { Map<String, SVNLogEntryPath> changedPaths = logEntry.getChangedPaths(); for (Map.Entry<String, SVNLogEntryPath> entry : changedPaths.entrySet()) { SVNLogEntryPath path = entry.getValue(); String filePath = path.getPath(); if (filePath.endsWith(".java") && (path.getType() == SVNLogEntryPath.TYPE_ADDED || path.getType() == SVNLogEntryPath.TYPE_MODIFIED)) { if (filePath.endsWith(className + ".java")) { return true; } String copyPath = path.getCopyPath(); if (copyPath != null && copyPath.endsWith(className + ".java")) { long copyRevision = path.getCopyRevision(); if (copyRevision >= logEntry.getRevision() - 10 && copyRevision <= logEntry.getRevision()) { return true; } } } } return false; } ``` 这样,就可以解析 SVN 路径下的 .java 文件,并获取修改的类了。不过需要注意的是,由于 SVNKit 是通过 SVN 服务器获取文件历史记录的,所以需要确保你有足够的权限访问该 SVN 服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值