2014-11-26 6 views
3

Я настроил git-зеркало perforce-репозитория через git-p4, как описано в http://answers.perforce.com/articles/KB_Article/Git-P4, и работал нормально в течение некоторого времени: я смог получить изменения в git и внести изменения git в perforce. Затем команда git p4 submit перестала работать. Когда я бегу, я получаю сообщение об ошибке:git-p4 submit не работает с ошибкой «Путь не в корне клиента»

You have files opened with perforce! Close them before starting the sync. 

Когда я запускаю его в расширенном режиме он показывает, что команда p4 -c <client name> -G opened ... выдает следующий вывод:

{scodeserrorsdatasrPath '/path/to/git/clone/...' is not under client's root '/path/to/git-p4-area'. 
severityisgenerici0% 

Ну, это на самом деле не под /path/to/git-p4-area, но это не было проблемой раньше. Также я все равно могу запустить git p4 rebase без проблем. Как исправить ошибку Path is not under client's root?

Update

Я был в состоянии решить эту проблему благодаря ответу Брайана. Оказывается, ошибка, которую я получил, была правильной, у меня действительно были файлы, открытые в perforce. Я вернул их командой p4 revert ... внутри /path/to/git-p4-area и теперь git p4 submit отлично работает.

Ошибка путала меня, потому что, когда вы используете git-p4, вы не меняете файлы в рабочей области perforce, вместо этого вы работаете с репозиторием git, а git-p4 переводит git-commits в perforce-изменения и наоборот. Оказывается, мой перманентный билет истек в середине последней операции отправки (билет истекает каждые 12 часов). Поэтому некоторые файлы были оставлены открытыми в рабочей области perforce. Лучшим решением будет работа менее 12 часов ...

ответ

2

Корень клиента сообщает серверу Perforce, где ваша копия файлов хранится на вашей рабочей станции или ноутбуке. Возможно, вы скопировали или переименовали или перенесли эту папку на свою рабочую станцию?

Если вы случайно не переместили или переименовали папку, вы можете переместить ее туда, где ожидает ее сервер.

Или, вы можете использовать команду «p4 клиент», чтобы обновить свой корень клиента, так что сервер Perforce знает, где хранятся файлы на вашей рабочей станции

+1

Спасибо вам за ответ! Это помогло мне решить проблему. Я не касался папки, где perforce хранит свои файлы. Оказывается, ошибка 'git p4 submit' была правильной. У меня действительно были файлы, открытые в perforce, как только я вернул их, я смог прогнать 'git p4 submit' успешно. – neverov

3

Это было решение для меня:

$ p4 opened -s | awk '{print $1}' | xargs p4 revert 

... т.к. p4 opened мощность был (удивительно) не пустой.

После этого обычный git p4 submit преуспел.