美文网首页SVN程序员
svn 设置keyword导致 diff 修改不了文件

svn 设置keyword导致 diff 修改不了文件

作者: Fengya | 来源:发表于2016-06-20 16:54 被阅读73次

问题描述

最近使用svn的时候经常使用svn diff命令来对比baseworking copy之间的差别。并直接利用vimdiff来对working copy进行修改。在我的svn版本库里通常都是很顺利的。但是今天遇到了一个文件,修改了右侧的文件后代码库中的文件并没有改变。

问题解决

首先检查了vimdiff对比的文件到底是什么。左侧确实是svn版本库里的base内容。右侧是一个系统中的临时文件。

然后检查是什么步骤出现的问题。修改自己编写的用于使用vimdiff来进行svn diff的脚本。直接输出svn diff的结果。查看参数发现是svn diff输出内容有问题。

然后去google了一下,找到了相似情景。stackoverflow上面的帖子

根据说明:

Do you have any svn:keywords set on those files? If yes, then Subversion will create a temp file first which has all those expanded keywords 'unexpanded'. This is to avoid having all the keyword lines shown as different even if they haven't been changed.

For example, if you diff a file in your working copy against BASE, the BASE file has no keywords expanded (and is also stored with LF lineendings), while the file in your working copy has all keywords expanded (and may be stored with CRLF lineendings). If you haven't modified that file locally, 'svn diff' would show all lines as different (if the line endings don't match) or at least all lines with the keywords would be shown as different - which is not what you would expect.

大致意思是使用了svn:keyword之后如果进行svn diff对比的时候,svn会创建一个没有keyword扩展的临时文件来用于对比。这种特性用于避免有keyword的行即使没有被修改,也显示被更改了的情况。

最后的结果是,由于keyword不是被需要的,只要执行:

svn propedit svn:keywords filename

将这个文件的keyword去掉即可。

相关原理

这里我们引入了svn的keyword的概念。svn:keywords的wiki
这里简述一下svn:keywords
keywords现在主要包括以下几项:

  • $Date: $
  • $Revision: $
  • $Author: $
  • $HeadURL: $
  • $Id: $

具体的说明可以看svn的说明

效果是在文中出现的$Date$,会被扩展成形如$Date:2016-06-20 16:37:25 +0800 (一, 20 6 2016)$的内容。

svn:keywords给我们一种自动对svn版本库里的文件进行说明的方法。

相关文章

  • svn 设置keyword导致 diff 修改不了文件

    问题描述 最近使用svn的时候经常使用svn diff命令来对比base和working copy之间的差别。并直...

  • svn 修改文件的二进制或文本标记

    svn修改二进制文件为正常文件,避免 diff 失败的问题。 $ svn propget svn:mime-typ...

  • git和svn diff命令行可视效果

    (一)svn diff 增强命令行上的可视效果基本原理是通过修改svn的配置文件,让svn diff命令重定向到v...

  • 获取svn目录文件列表

    背景 需要查询svn上特定日期后后修改的文件和文件夹列表。 通过bat脚本的方式。 方式一 通过svn diff ...

  • 文件比较-SVN

    同时选中2个文件,右键->SVN->Diff

  • git 简单使用

    git status 查看本地修改内文件 git diff <--file--> 查看修改文件的修改内容 gi...

  • svn使用

    查看修改过哪些文件 文件夹回滚 提交代码文件 4.修改代码提交 删除svn已经存在文件,然后svn ci -m "...

  • git命令

    git status //查看那些文件有修改git diff 文件名 //查看对应文件的修改内容git che...

  • 设置git diff用beyond compare工具比较

    Windows下: 方法1. 直接修改~/.gitconfig文件 [diff] ...

  • Git常用命令

    查看、添加、提交、删除、找回,重置修改文件 查看文件diff 查看提交记录 Mac上可以使用tig代替diff和l...

网友评论

  • max_l:不是很理解为什么要使用命令行
    Fengya:@max_l 因为有时候有远程的需求

本文标题:svn 设置keyword导致 diff 修改不了文件

本文链接:https://www.haomeiwen.com/subject/ywvwdttx.html