iOS:检查使用NSTask进行SVN签出是否成功
因此,我目前正在使用以下代码签出SVN目录:iOS:检查使用NSTask进行SVN签出是否成功,ios,objective-c,svn,svn-checkout,Ios,Objective C,Svn,Svn Checkout,因此,我目前正在使用以下代码签出SVN目录: NSTask *task = [[NSTask alloc] init]; NSPipe *checkoutPipe = [[NSPipe alloc] init]; [task setLaunchPath:@"/usr/bin/svn"]; [task setArguments:[NSArray arrayWithObjects:@"checkout",SVN_URL_OF_PRJECT_DIR,DEST_DIR,@"--username",SVN
NSTask *task = [[NSTask alloc] init];
NSPipe *checkoutPipe = [[NSPipe alloc] init];
[task setLaunchPath:@"/usr/bin/svn"];
[task setArguments:[NSArray arrayWithObjects:@"checkout",SVN_URL_OF_PRJECT_DIR,DEST_DIR,@"--username",SVN_USER,@"--password",SVN_PASSWORD,nil]];
[task setStandardOutput:checkoutPipe];
[task launch];
NSFileHandle *file = [checkoutPipe fileHandleForReading];
NSData *data = [file readDataToEndOfFile];
NSString *checkoutResult = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Result: %@",checkoutResult);
这段代码运行良好,但我想通过编程检查签出是否真正成功?如果签出成功,NSLog将打印“签出的版本XY.
”,但我观察到,即使文件实际上无法放入指定的目录(如果目标路径不正确),它也会打印。它将打印签出的XY修订消息以及目标目录不好的消息
所以我的问题是:什么是测试签出是否完全正常的可靠方法,以及如何确保在签出过程完成后完成检查(我不确定,但它不是异步的?或者它必须在bg线程中才能异步?。首先等待任务完成。这可以同步完成:
[task waitUntilExit];
或通过注册并等待NSTASKDIDDTERMINATENTIfication
异步执行
然后获取进程退出状态:
int status = [task terminationStatus];
对于大多数命令,退出状态0
表示无错误,退出状态>0
表示有错误。我确信这适用于svn
命令,但您可以使用svn文档进行检查