从我的SVN自我中拯救我

从我的SVN自我中拯救我,svn,shell,Svn,Shell,使用svn时,我想签入整个本地存储库,我将cd放入其目录并键入: svn commit -m "blah blah" 我很快意识到(痛苦的方式)这不会自动添加新文件 为了做到这一点,我将执行以下两个步骤: find . | grep -v ".svn" | grep -v "ignorepattern" | xargs svn add 2>/dev/null svn commit -m "blah blah" 现在,我不是shell大师,但我的代码感给我带来了一股糟糕的代码味道 如有任

使用svn时,我想签入整个本地存储库,我将cd放入其目录并键入:

svn commit -m "blah blah"
我很快意识到(痛苦的方式)这不会自动添加新文件

为了做到这一点,我将执行以下两个步骤:

find . | grep -v ".svn" | grep -v "ignorepattern" | xargs svn add 2>/dev/null
svn commit -m "blah blah"
现在,我不是shell大师,但我的代码感给我带来了一股糟糕的代码味道

如有任何建议,将不胜感激


谢谢

找到要添加的文件的更简单方法:

svn status | grep "^\?" | awk {'print $2'}

它的好处是使用svn客户端确定要添加的内容(新的、未被忽略的文件),因此更安全、更快。

查找要添加的文件的更简单方法:

svn status | grep "^\?" | awk {'print $2'}

它的好处是使用svn客户端来确定要添加的内容—新的、不被忽略的文件—因此更安全、更快。

好的,这并不是对这个问题的直接回答,但我必须说,这确实是一个工作流问题,而不是您应该尝试自动处理的问题。开发目录往往会被很多你不想在源代码控制下使用的随机文件填满,但是忘记了添加到忽略文件中。这个过程很快就会让你的存储库充满垃圾

此外,创建一个新的项目资源通常是一个相当罕见的过程,应该至少稍微仔细考虑一下。我赞成在每个资源(或批处理,通过globbing)上执行“svn添加”这一步骤,因为它可以停止随意提交


如果您担心会忘记一些事情,“svn status”命令就是您的朋友。偶尔运行它,以确保您正在跟踪您关心的所有资源。

好的,这并不是对问题的直接回答,但我必须说,这确实是一个工作流问题,而不是您应该尝试并自动处理的问题。开发目录往往会被很多你不想在源代码控制下使用的随机文件填满,但是忘记了添加到忽略文件中。这个过程很快就会让你的存储库充满垃圾

此外,创建一个新的项目资源通常是一个相当罕见的过程,应该至少稍微仔细考虑一下。我赞成在每个资源(或批处理,通过globbing)上执行“svn添加”这一步骤,因为它可以停止随意提交

如果您担心会忘记一些事情,“svn status”命令就是您的朋友。偶尔运行它以确保您正在跟踪所有您关心的资源。

切换到(…或git或bazaar或其他任何东西。实际上我是认真的)

。。。hgnore比一堆该死的svn ignore属性更容易管理

Svn并不是唯一的免费版本控制系统,您可能需要考虑切换。(。

切换到(…或git或bazaar或其他任何地方。实际上我是认真的)

。。。hgnore比一堆该死的svn ignore属性更容易管理

Svn并不是唯一的免费版本控制系统,您可能需要考虑切换。()

最好写成

find . -name .svn -prune -o ! -name '*ignorepattern*' -exec svn add {} +
这将排除“
.svn
”目录,而不排除名为“
foo/svn bar
”的文件,并处理文件名中的空格

如果您没有GNU findutils,这可能必须是

find . -name .svn -prune -o ! -name '*ignorepattern*' -print0 | xargs -0 svn add
不过,我同意其他对该工作流程可取性提出质疑的答案和意见

最好写成

find . -name .svn -prune -o ! -name '*ignorepattern*' -exec svn add {} +
这将排除“
.svn
”目录,而不排除名为“
foo/svn bar
”的文件,并处理文件名中的空格

如果您没有GNU findutils,这可能必须是

find . -name .svn -prune -o ! -name '*ignorepattern*' -print0 | xargs -0 svn add

不过,我同意其他对该工作流程可取性提出质疑的答案和评论。

那么您在提交之前没有审查差异?Tsk,Tsk

您可以在每次提交之前执行
svn st
,并在第一列中输入“?”。只要你在做一些小的承诺,这些应该不难抓住


或者,如果它是您环境中的一个选项,您可以使用GUI工具来提交。在Tortoise中,未版本的文件非常突出,可以从提交窗口中添加(通过右键单击并选择“添加”,或者通过选中复选框并单击“确定”)。

那么您在提交之前没有检查差异?Tsk,Tsk

您可以在每次提交之前执行
svn st
,并在第一列中输入“?”。只要你在做一些小的承诺,这些应该不难抓住


或者,如果它是您环境中的一个选项,您可以使用GUI工具来提交。在Tortoise中,未版本的文件非常突出,可以从提交窗口中添加(通过右键单击并选择“添加”,或者通过选中复选框并单击“确定”)。

我也是命令行迷,我经常从命令行发出命令,如svn status和svn update,但正如一些人在这里所建议的,当涉及到提交时间时,我确实需要更多关于我将要提交的内容的信息,而不是命令行提供的信息。当然,我可以使用svn diff,但它只是很难读取输出


我建议在命令行顶部使用一个像样的GUI客户端。一个通用的,跨平台的(基于Java的)是。我认为在提交更改时,GUI是最好的选择。

我也是命令行迷,我经常从命令行发出命令,如svn status和svn update,但正如一些人在这里建议的那样,在提交时间方面,我确实需要更多关于我将提交的内容的信息,而不是命令行提供的信息。当然,我可以使用svn diff,但它只是很难读取输出

我建议在命令行顶部使用一个像样的GUI客户端。一个通用的,跨平台的(基于Java的)是。我想当谈到成龙的时候