所以我目前正在使用以下代码来签出 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 会打印“ Checked out revision XY.
”,但我观察到即使文件实际上无法放入指定的目录(如果目标路径有点糟糕),它也会打印。它将打印 Checked out revision XY 消息以及目标目录不好的消息。
所以我的问题是:什么是测试结帐是否完全正常的可靠方法以及如何确保在结帐过程完成后完成检查(我不确定,但它不是异步的吗?或者会必须在 bg 线程中才能异步?)。