У меня была та же самая ошибка; но ~/.gitconfig
глобальный файл конфигурации был ключом.
, Если у Вас есть прокси с аутентификацией, необходимо вставить ее:
git config --global http.proxy http://login:password@our-proxy-server:8088
И это просто работает (с' git clone http:
')
Пример блога, детализирующего ту же установку: клон МЕРЗАВЦА по HTTP: кто знал?
, Если это все еще перестало работать в 407, это могло бы быть связано с проблемой с , выборка мерзавца, теряющая аутентификационные маркеры на втором HTTP, ДОБИРАЕТСЯ . более поздняя версия libcurl могла бы быть необходима.
январь 2011 Обновления: jbustamovej упоминает в [1 110] его ответ (upvoted) его сообщение в блоге" GitHub Позади Корпоративного Прокси ", который добавляет это:
It’s важный, чтобы отметить, что , если Ваш вход в систему имеет обратную косую черту , как в
domain\login
, , необходимо выйти из обратной косой черты , как в:
git config --global http.proxy http://domain\\\login:password@our-proxy-server:8088
stringByAppendingPathComponent, как это работает?
Просто. Вы хотите добавить компонент пути. Вы отправляете это сообщение в строку, к которой хотите добавить компонент пути, передавая компонент пути, который вы хотите добавить.
Компоненты пути не являются косой чертой; в противном случае метод pathComponents
не вернул бы ничего, кроме массива косых черт. Компоненты пути - это части между косой чертой (хотя есть особый случай, описанный в определении pathComponents
).
Косая черта - это разделитель пути . Это жестко запрограммировано внутри Какао; это в настоящее время (и, вероятно, всегда будет) косая черта. Итак, если вы действительно хотите добавить косую черту к строке,
[newPath setString: rootPath]; [newPath appendString: @ "/"]; [newPath appendString: имя_файла];
fileName
- это компонент, который вы хотите добавить. Используйте stringByAppendingPathComponent:
и передайте fileName
, а не косую черту.
Что касается утечек в вашем примере: хорошо, выпадает ли объект из области действия, не будучи освобожденным? Ответ на этот вопрос - ответ на вопрос, утечка ли это. Если вы не уверены, просмотрите правила управления памятью .
Во всех существующих ответах утечка исходного testPath
строка. Для чего-то такого простого, почему никто не рекомендовал - [NSMutableString appendString:]
intead?
[testPath appendString:@"/"];
Нет эквивалента -stringByAppendingPathComponent:
для NSMutableString, но похоже, что он просто пытаюсь добавить косую черту, а не компонент пути. Если вы действительно хотели добавить компонент пути, вы можете сделать это:
[testPath setString:[testPath stringByAppendingPathComponent:@"..."]];
Это неприятный обходной путь, но, как указывает @dreamlax, -stringByAppendingPathComponent:
всегда возвращает неизменяемую строку, даже когда вызывается для объекта NSMutableString. : - (
Вы не добавляете разделитель. Вы добавляете следующий компонент пути (например, имя файла, каталог и т. Д.). Это избавляет вас от необходимости знать разделитель для вашей конкретной системы.
NSMutableString* mutablePath = [NSMutableString string];
NSString* fullPath = [rootPath stringByAppendingPathComponent:filename];
[mutablePath setString:fullPath]; // OK to setString: of Mutable with non-Mutable
[mutablePath appendString:someOtherString]; // This won't cause an exception
// Example to clarify on comments below
{
// This will cause a compiler warning.
// warning: incompatible Objective-C types assigning
// ‘struct NSString *’, expected ‘struct NSMutableString *’
NSMutableString* ms = [@"FOO" stringByAppendingPathComponent:@"BAR"];
}
-stringByAppendingPathComponent
возвращает новую неизменяемую строку, она не изменяет исходную. Вы должны использовать возвращаемое значение этого метода.
Последняя строка должна быть:
testPath = [testPath stringByAppendingPathComponent:@"/"];