Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对Git、Mercurial和Bazaar使用相同的文件安全吗?_Git_Mercurial_Dvcs_Bazaar_Ignore - Fatal编程技术网

对Git、Mercurial和Bazaar使用相同的文件安全吗?

对Git、Mercurial和Bazaar使用相同的文件安全吗?,git,mercurial,dvcs,bazaar,ignore,Git,Mercurial,Dvcs,Bazaar,Ignore,Git、Mercurial和Bazaar的忽略文件似乎都有类似的格式(,[另请参阅) 为了改进全局忽略文件的同步,将其中一个文件用作实际文件并简单地将另外两个符号链接到该文件是否安全?换句话说,将my$HOME/.gitignore作为规范忽略文件并执行以下操作是否有危险 ln -s $HOME/.gitignore $HOME/.hgignore ln -s $HOME/.gitignore $HOME/.bazaar/ignore 或者它们之间有什么细微的差别会在某一点上咬到我吗?至少Gi

Git、Mercurial和Bazaar的忽略文件似乎都有类似的格式(,[另请参阅)

为了改进全局忽略文件的同步,将其中一个文件用作实际文件并简单地将另外两个符号链接到该文件是否安全?换句话说,将my
$HOME/.gitignore
作为规范忽略文件并执行以下操作是否有危险

ln -s $HOME/.gitignore $HOME/.hgignore
ln -s $HOME/.gitignore $HOME/.bazaar/ignore

或者它们之间有什么细微的差别会在某一点上咬到我吗?

至少Git和Mercurial的语法不同(hg中的glob和regex模式),不要忘记hg中的文件集,bzr中的!conditions

忽略文件中使用的语法因系统而异:

  • Mercurial:正则表达式列表-可以使用
    语法:glob
    行进行更改

  • Bazaar:shell全局模式列表-前缀为
    RE:
    以匹配正则表达式

  • Git:shell全局模式列表

此外,shell模式和正则表达式如何匹配的确切规则因工具而异。总之,这意味着您只能希望在全局忽略文件非常简单的情况下使用此技巧。否则,正如您所说,这些差异可能会影响您

我用这个文件测试了它:

syntax: glob
.bzr
.git
.hg
*.o
*~
在所有三种工具中,它似乎都能正常工作。为了测试它,我创建了以下目录树:

$ tree
.
|-- foo.c
|-- foo.c.~1~
|-- foo.h
|-- foo.o
`-- src
    |-- bar.c
    |-- bar.c.~1~
    `-- bar.o
并为每个工具运行状态命令:

$ for tool in hg git bzr; do echo "== $tool status =="; $tool status; done
== hg status ==
? foo.c
? foo.h
? src/bar.c
== git status ==
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       foo.c
#       foo.h
#       src/
nothing added to commit but untracked files present (use "git add" to track)
== bzr status ==
unknown:
  foo.c
  foo.h
  src/

到您的
$HOME/.hgrc

文件。

在Mercurial中,您还可以通过在一行前面加上
glob:
@LaurensHolst:对,将其更改为glob,但在这里,我希望Mercurial将以下模式视为glob模式,因为这是Git和Bazaar的默认模式。
[ui]
ignore.my-default = ~/.hgignore