Должен ли Git когда-нибудь думать, что файл, полученный из-за извлечения, теперь не отслежен? - PullRequest
5 голосов
/ 05 октября 2011

У одного из наших разработчиков постоянно возникают проблемы с его репозиториями Git. Он извлекает, а затем «git status» показывает полный список неотслеживаемых файлов (то есть, Git считает, что они новые), которые фактически были получены после его последнего извлечения. Вы можете на самом деле вернуться через его git log и указать конкретный коммит, который их добавил, и он в его истории. Однако, если вы перейдете к одному из неотслеживаемых файлов и сделаете в нем журнал git, истории вообще не будет.

Я абсолютно озадачен. Все в группе, включая меня, новички в Git, поэтому я не могу исключить, что он может где-то ошибиться, но это маловероятно. Как будто его хранилище продолжает портиться.

Он использует msysgit 1.7.6 и Tortoise Git 1.7.3. Некоторое время мы использовали eGit с myEclipse, и он несколько раз падал, так что все ранние проблемы были в этом виноваты. Теперь, я не думаю, что кто-то использует его больше, поэтому я не чувствую, что могу больше обвинять eGit.

Мне нужна помощь Git-гуру Stack Overflow! Что может быть причиной этого? Есть ли обстоятельства, при которых это было бы нормально?

Для каждого запроса, вот файл .git / config для хранилища, который был поврежден:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = G:\\DotcomB
    puttykeyfile = 
[branch "master"]
    remote = origin
    merge = refs/heads/master
[user]
    name = jsmith
    email = JoeSmith@somewhere.com

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Проверьте, не была ли изменена переменная окружения git-dir. Аналогично рабочая переменная дерева. Также посмотрите, находитесь ли вы в том же каталоге, что и вы думаете. Вы используете tortoisegit, и это может быть другой каталог, который вы смотрите в сравнении с командной строкой.

Кроме того, когда вы CD к файлу, чтобы увидеть, если он там, убедитесь, что вы завершите имена каталогов, так как msysgit с удовольствием обработает файл / каталог, независимо от того, что это за регистр. Git, однако заботится.

mydir/somefile

может быть достигнуто

cd MYDIR

и путь будет отражать это.

Теперь состояние git покажет, что существует файл, который не отслеживается, потому что git увидит mydir/somefile как нечто отличное от MYDIR/somefile. Иногда это трудно увидеть, потому что все, что требуется, это различие в регистре на всем пути к файлу, чтобы получить такое поведение.

Придерживайтесь командной строки сейчас, чтобы решить эту проблему. Прыжки между черепахой и командной строкой не могут помочь в ситуации.

Можете ли вы запустить новый репозиторий и посмотреть, можно ли его воспроизвести только в командной строке?

Надеюсь, это поможет,

Адам

0 голосов
/ 16 августа 2012

Мы никогда не «решали» эту проблему.Однако мы прекратили использовать удаленный каталог для хранения общих репозиториев.Он никогда не работал хорошо, он использовал Novell или какое-то медленное сетевое решение для Windows, и мы регулярно видели проблемы того или иного рода.

Теперь я не могу доказать, что причиной необычной установки былавсе наши проблемы, , но , я настроил GitBlit в качестве сервера Git, с которым мы могли бы поговорить.После того, как я это сделал, каждое действие, которое мы выполняли с сервером, было буквально на порядок быстрее, и мы никогда больше не видели проблемы с коррупцией.

...