2012-03-24 10 views
17

私はgit pullディレクトリからルートユーザ経由でいくつかのリポジトリにしようとしています。 /root/からgit pullを実行する例えば Gitの引っ張りは現在のディレクトリに依存

、:

#> cd ~ 
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull 
/usr/libexec/git-core/git-sh-setup: line 142: cd: /root/.: Permission denied 
Cannot chdir to /root/., the toplevel of the working tree 

そして/からgit pullを実行:

#> cd/
#> sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git pull 
Already up-to-date. 

git pull INGのコマンドをカレントディレクトリに影響を与えたのはなぜですか?

どのように冗長なcdを避けることができますか?

+0

ここで、/ rootはレポ内のフォルダですか?それはあなたが許可の問題を持ってはいけないはずです。 /rootがgit構造体の外側にある場合、最初にそのフォルダにアクセスする理由は何ですか? – bluesman

+0

なぜあなたはrootとして働こうとしていますか? – Ethan

+0

eix-sync.confの内容であるため、私はrootで作業しようとしています。 –

答えて

16

最初の例では、gitコマンドは、ユーザdmalikovとして現在のディレクトリ/rootで実行されます。 git pullコマンドはgit fetchとそれに続くgit mergeに相当し、git mergeは作業ツリー上で動作しているので、gitは作業ツリーを探そうとします。このユーザーにはcd /rootへのアクセス権がないため、gitコマンドは失敗します。

2番目の例でも期待通りに機能しません。実際に変更が行われている場合(「既に最新」ではなく)、作業中のツリーが見つからないため、git pullが失敗します。

1)あなただけ行うことによって、操作のgit fetch一部を行うことができます:

sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git fetch 

私のためにすべてのエラーを与えるものではありません

あなたはいくつかの簡単なオプションがあります。

2)あなたは作業ツリーにcdを追加することができます。私自身のコメントに答えるために

(cd /home/dmalikov/path/to/repo; sudo -u dmalikov git pull) 
+1

関連:git --git-dirが期待通りに動作しない:http://stackoverflow.com/questions/1386291/git-git-dir-not-working-as-expected – kenorb

0

ディレクトリを現在のディレクトリ(つまり/ root)に戻す権限がないユーザでgitを実行すると、cdを避けることはできません。 /すべての人がそのディレクトリに変更する権限を持っているので、現在のディレクトリは明らかに機能します。

+0

'致命的: '/ root'に戻ることができませんでした:許可が拒否されました。 ' –

+0

私の答えが変更されました。それは、私が最初に思ったように、パーミッションと関係しています。 – ralphtheninja

2

、/ルートは、それが--git-dirのでは動作させるには興味深いエラー

ました

sudo -u dmalikov git --git-dir=/home/dmalikov/path/to/repo/.git --work-tree=/home/dmalikov/path/to/repo/.git pull 
+1

'fatal: '/'に戻すことができませんでした ' root ':許可が拒否されました' –

+0

あなたはどのマシンにいますか?システム(WindowsまたはLinux)固有のパスを使用します。 私のローカルマシン(git bash for windows)で動作します '$ git --git-dir =/c/workspace/changes/.git --work-tree =/c/workspace/changes/pull 既に最新です。 – bluesman

+0

dirからコマンドを実行しようとします。ここでは、ルート以外のユーザから 'cd'を実行することはできません。 –

関連する問題