SVN忽略某个文件的更改,并不提交

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN忽略某个文件的更改,并不提交相关的知识,希望对你有一定的参考价值。

我的项目是用asp做开发的,数据库用的access,这个库我是保持格式的初始库,我给这个库设了只读权限,但是其他兄弟签出进行开发的话这个数据库是会产生一定的测试数据的,也就是相关于这个数据库文件产生了改动。这时候TSVN就会给出反应(更新),当我们进行提交的时候就会出现在更新列表中,如果提交就会出错,而且这个项目的图标也会变成红红的,,,丑死了。请问怎么可以忽略这个文件的更改并不提交他呢,前提。。服务器上的这个文件必须存在,不能删除,网上很多教程讲的都是服务器上不存在这个文件,也就是不记得版本控制的文件,我这个文件是要参与版本控制的。
这都是些什么人呀,比我还不懂SVN些呀,求忽略单个文件,但单个文件需要记入版本库的办法。就是说这个文件在客户端修改不会得到提交,但是别人在签出或导出时这个数据库是会一起签出的

选择TortoiseSVN->Setings->SavedData
里面有个authentication data,点击后面的Clear就好了
下次有什么动作会提示你输入用户名和密码
参考技术A 你是用的小乌龟做客户端吗?
在文件夹里点右键,选择TortoiseSVN->Setings->SavedData
里面有个authentication data,点击后面的Clear就好了
下次有什么动作会提示你输入用户名和密码

参考资料:百度一下

参考技术B 提供两个思路吧:
1、首先将这个文件上传,保证服务器端有这个文件,然后在ToitorseSVN客户端设置全局忽略样式,将整个文件名作为忽略条件,这样在提交时就不会提交这个文件了。这个方法的问题在于如果在别的文件夹下有同名文件需要提交,那么就会导致那个文件也被忽略。
2、将这个access文件放在另一个svn版本库中,在该项目的版本库中通过设置svn:externals属性来外部引用这个文件,这样应该也不会提交这个文件。这个方法没验证过,只是理论分析,你可以自行验证。
-----------
补充一下,如果用方法一,就必须通知所有人员在客户端都设置忽略这个文件。本回答被提问者采纳

从 SVN 更新时是不是可以始终(强制)覆盖本地更改?忽略冲突?

【中文标题】从 SVN 更新时是不是可以始终(强制)覆盖本地更改?忽略冲突?【英文标题】:Is it possible to always (force) overwrite local changes when updating from SVN? Ignore conflicts?从 SVN 更新时是否可以始终(强制)覆盖本地更改?忽略冲突? 【发布时间】:2011-04-12 04:08:33 【问题描述】:

我知道我应该在自己的分支上工作,但我们中的几个人在一个项目的同一个分支上。其中一个开发人员提交了一份文件,我只是想用来自 SVN 的最新版本更新我的本地副本。运行 'svn update' 我得到这个输出:

Restored 'index.html'
U    somescript.php
Conflict discovered in file.xml'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: 

是否有选项/方法可以覆盖我的本地更改并从 subversion 获取最新文件并忽略所有冲突?

我查看了 Stack 上的其他一些帖子,但他们都没有回答这个问题。他们说要删除项目并再次结帐,我想这是否是最好的方法,就这样吧……但是想了解有关为什么我不能强制更新的更多详细信息。 谢谢

编辑:

所以我选择了 s '显示所有选项':

(s) 显示所有选项:s

  (e)  edit             - change merged file in an editor
  (df) diff-full        - show all changes made to merged file
  (r)  resolved         - accept merged version of file

  (dc) display-conflict - show all conflicts (ignoring merged version)
  (mc) mine-conflict    - accept my version for all conflicts (same)
  (tc) theirs-conflict  - accept their version for all conflicts (same)

  (mf) mine-full        - accept my version of entire file (even non-conflicts)
  (tf) theirs-full      - accept their version of entire file (same)

  (p)  postpone         - mark the conflict to be resolved later
  (l)  launch           - launch external tool to resolve conflict
  (s)  show all         - show this list

我想我应该选择“tc”选项?

【问题讨论】:

您为什么要这样做?进行合并,您不会丢失您的更改。否则执行svn revert 然后svn up 重点是我不需要我的更改,我想获取该文件的最新版本并覆盖我的更改 你为什么不删除文件并通过更新获得最新版本? :) 这是一种方法,但是如果我有几百个文件并且我不想删除项目或删除文件怎么办,有没有办法我可以'svn update ' 获取最新版本? 【参考方案1】:

我会这样做:

svn up --accept tf

svn up --accept theirs-full

也就是说,“svn revert -R”然后在工作副本的根目录下“svn up”也可以解决问题。就我而言,我有几个用于各种项目的 WC,所以我运行一个 shell 脚本,在我启动计算机时更新所有这些 WC。我不使用接受,而是使用“--accept p”来推迟解决,因为它是一个自动化过程,然后我合并任何 SVN 无法自行合并的冲突(通常,这涉及还原,但这取决于)。

【讨论】:

奇怪 - 可能是特定于 SVN 客户端/版本的。我在 Win7 上运行当前版本的 TortoiseSVN,但是这个命令也适用于我们在 CentOS 服务器上的 SVN 服务器。【参考方案2】:

tato的回答绝对正确,请注意他的谨慎。您将丢失所有更改。只是对语法和一些细微差别的澄清

svn revert 默认情况下是非递归的,需要一个工作路径。制作是递归添加“-R”。如果您在当前目录中,请使用“./”作为下面的“路径”或使用绝对路径,如“/path_to_your_folder”

svn revert -R <path>

svn 更新是递归的。如果您在目录中,则根本不需要路径

svn update

【讨论】:

【参考方案3】:

如果你真的想要一份 HEAD(repos 中的最新版本),那么你应该

svn revert -R <path> // discard all your changes inside path (recursive)
svn update           // get latest revision of all files (recursive)

就是这样。

请注意,您将丢失自上次“提交”以来的所有更改。

编辑:为了完整起见,从Isu_guy answer 中添加了-R &lt;path&gt;,并帮助读者找到一个完整的答案

【讨论】:

未删除版本的文件。也可以在这里查看:Is there a Subversion command to reset the working copy?【参考方案4】:

回答您的第一个问题。 没有。但是您可以通过从项目的根目录运行以下命令来覆盖本地文件:

svn revert -R .
svn update

这在我的 svn 1.7.19 的 mac 和 svn 1.8.8 的 ubuntu 上工作

【讨论】:

【参考方案5】:

使用 svn 1.6.11(由 CentOS 6.4 提供)Carnix 的命令应该如下所示

svn up --accept theirs-full

(我没有足够的声誉,无法添加评论)

【讨论】:

以上是关于SVN忽略某个文件的更改,并不提交的主要内容,如果未能解决你的问题,请参考以下文章

从 SVN 更新时是不是可以始终(强制)覆盖本地更改?忽略冲突?

svn怎么忽略部分文件更新?

6 idea提交SVN时忽略某些文件或文件夹

android svn怎么忽略文件

如何让git忽略指定的文件

svn设置忽略文件为啥不管用