4

gitリポジトリを使用してドットファイルを管理していますが、サブモジュールを正しく機能させるのに最も苦労しています(ほとんどの.vimには多くの外部プラグインがあります)

実行するエイリアスcgitがあります(関連するかどうかはわかりません)。aliascgit='GIT_DIR = / home / myuser / .config-git GIT_WORK_TREE = / home /myuser/。ギット'"

したがって、cgit pullを使用してリポジトリをプルすることはできますが、サブモジュールをチェックアウト/更新することはできません。

$ cgit submodule status
-9895285042a2fd5691b2f6582aa979e4d1bdffea .vim/bundle/ack
-e9267044261481fbb6717b482c2f3811eb61b409 .vim/bundle/command-t
<snip>
$ cgit submodule init
$ cgit submodule update
fatal: working tree '/home/myuser/.' already exists.
Clone of 'https://github.com/mileszs/ack.vim.git' into submodule path '.vim/bundle/ack' failed
$

その特定のディレクトリを削除して再試行しましたが、爆弾が発生しました。私の.gitmodulesには/home/myuser/がありません。.config-git / configにもホームディレクトリへの参照がないため、途方に暮れています。それが助けになるなら、私のバージョンのgitは1.7.4.1です

ありがとう!

アップデート

最初は、gitサブモジュールが環境変数を受け入れなかった(他のgitコマンドは受け入れていた)という奇妙なバグだったようですが、コマンドライン引数を渡す必要がありました。これで、クローンが機能し、文句を言うだけです(ack構成を手動で修正しました)

Cloning into '.vim/bundle/command-t'...
remote: Counting objects: 2659, done.
remote: Compressing objects: 100% (1089/1089), done.
remote: Total 2659 (delta 1453), reused 2524 (delta 1325)
Receiving objects: 100% (2659/2659), 447.42 KiB, done.
Resolving deltas: 100% (1453/1453), done.
fatal: Could not chdir to '../../../../../../../nfs_mounts/home/myuser/.vim/bundle/command-t': No such file or directory

そして、〜/ .config-git / modules / .vim / ack / configを見ると、次のように表示されます。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    worktree = ../../../../../../../nfs_mounts/home/myuser/.vim/bundle/command-t
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://github.com/wincent/Command-T.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

しかし、そのワークツリーを「ls」すると、そこにあるように見えます。すべての../を削除してから、もう一度gitを試してみてください。

4

1 に答える 1

1

設定しているからだと思いますGIT_DIR。サブモジュールのクローンがサブモジュールの.gitディレクトリを配置しようとしているようです~/.gitが、ホームの git ディレクトリは既にそこにあります。

そのように GIT_DIR を設定する目的は何ですか?

于 2012-12-13T16:34:23.820 に答える