Objective c 如何制作GIT凭证助手?

Objective c 如何制作GIT凭证助手?,objective-c,git,bash,shell,nstask,Objective C,Git,Bash,Shell,Nstask,为了清晰起见,对原始问题进行了编辑: 我有一个主要的项目,做一个git克隆https://my.repo.project.git。该项目有2个目标(主目标和密码助手目标)。存储库受密码保护,将要求输入用户名,然后输入密码。主应用程序通过NSTask对象调用git命令 NSDictionary *environmentDict = [[NSProcessInfo processInfo] environment]; [task setLaunchPath:gitExecutableLaunchP

为了清晰起见,对原始问题进行了编辑:

我有一个主要的项目,做一个
git克隆https://my.repo.project.git
。该项目有2个目标(主目标和密码助手目标)。存储库受密码保护,将要求输入用户名,然后输入密码。主应用程序通过
NSTask
对象调用git命令

NSDictionary *environmentDict = [[NSProcessInfo processInfo] environment];

[task setLaunchPath:gitExecutableLaunchPath];
[task setArguments:[NSArray arrayWithObjects:@"clone", @"https://my.repo.project.git"];
[task setCurrentDirectoryPath:path];
[task setEnvironment:environmentDict];
我遵循的概念是,当主目标没有存储在repo密钥链中的git凭据时,让我的密码助手目标自动运行。此辅助密码帮助器目标只需执行以下代码(为简单起见):


我可以在日志中看到密码助手应用程序已经启动,但我总是收到一条“身份验证失败消息”。知道我做错了什么吗?我的目标是开发一个类似git的git credential osxkeychain应用程序的凭证助手应用程序。非常感谢您的帮助

找到了解决方案。在检查控制台时,我注意到Askpass目标被调用了两次。这似乎是第一次调用用户名,第二次调用密码。我使用以下代码确定调用Askpass目标的原因,并使用适当的值进行响应

NSArray *args = [[NSProcessInfo processInfo] arguments];
我相信答案就是你想要的。
NSArray *args = [[NSProcessInfo processInfo] arguments];