10

Git、Mercurial、および Bazaar はすべて、無視ファイルの形式が似ているようです ( .gitignore.hgignore.bzrignore[ bzr パターンも参照] )。

グローバル無視ファイルの同期を改善するために、1 つを実際のファイルとして使用し、他の 2 つをそのファイルに単純にシンボリック リンクするのは安全でしょうか? 言い換えれば、$HOME/.gitignore正規の無視ファイルを作成して実行することに危険はありますか

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

それとも、ある時点で私を噛むような微妙な違いがありますか?

4

2 に答える 2

13

無視ファイルで使用される構文は、システムごとに異なります。

  • Mercurial:正規表現のリスト — 1 行で変更できますsyntax: glob

  • Bazaar:シェル glob パターンのリスト —RE:正規表現として一致するように接頭辞を付けます。

  • Git:シェル glob パターンのリスト。

さらに、シェル パターンと正規表現がどのように一致するかについての正確な規則は、ツールごとに異なります。全体として、これは、グローバルな無視ファイルが非常に単純な場合にのみ、このトリックを使用できることを意味します。そうしないと、あなたが言うように、違いが来てあなたを噛む可能性があります。

このファイルでテストしました:

syntax: glob
.bzr
.git
.hg
*.o
*~

3 つのツールすべてで意図したとおりに動作するようです。テストするために、次のディレクトリ ツリーを作成しました。

$ 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/

ご覧のとおり、この単純なファイルは正常に機能します。

技術的には、Git と Bazaar はsyntax: glob. $HOME/.hgignore最後に、Mercurial はデフォルトではファイルを読み取らないことに注意してください。ただし、追加することで読み取らせることができます

[ui]
ignore.my-default = ~/.hgignore

あなたの$HOME/.hgrcファイルに。

于 2012-03-14T08:38:05.960 に答える
1

少なくとも Git と Mercurial の構文は異なります ( hg のglob と regexパターン)。hg のファイルセットも忘れないでください。bzrの条件

于 2012-03-14T04:11:30.563 に答える