我正在使用Git存储库来处理与我正在开发的网站相关的所有内容.存储库包含与站点相关的所有文件,包括文档,模型,原始分层图像等,以及我放在www子目录中的Web根目录.
我正准备开始整合我选择用于项目其余部分的CMS; CMS是一个开源项目,也使用Git进行管理(如果重要的话,托管在GitHub上).显然CMS需要在www子目录中,但它不会是唯一的东西 - 会有CSS文件,图像,CMS的模板等等.因此,我选择了使用子树合并策略将外部项目添加到我的存储库.因为我可能在某个时候想要修改原始项目并提供更改,我已经从GitHub克隆了CMS存储库并从我的克隆中完成了子树合并.
问题是,外部项目(即CMS)具有我想要包含的子模块.确保子模块集成到主项目中的最佳方法是什么?我是否必须为每个子模块进行子树合并?
我不太可能想要修改子模块,但我可能会有一两个子模块.
我使用新的XCTest框架在Xcode 5中对Mac App进行单元测试.具体来说,我正在尝试测试一个类实现了一个(尚未写的!)- (id)initWithStream:(NSInputStream)stream方法.所以我开始测试了:
- (void)testInitWithStream
{
// Should have an init method named initWithStream:
XCTAssertTrue([[MYParser alloc]
respondsToSelector:@selector(initWithStream:)],
@"'initWithStream:' not implemented.");
Run Code Online (Sandbox Code Playgroud)
哪个工作正常; 测试目前按预期失败.这是下一部分,试图运行尚未成文的方法,这让我感到悲痛:
// Should return nil if no valid stream is passed
XCTAssertNil([[MYParser alloc]
performSelector:@selector(initWithStream:)
withObject:nil],
@"should get nil on 'initWithStream:' with no stream.");
Run Code Online (Sandbox Code Playgroud)
Xcode给出了错误"PerformSelector命名一个保留对象的选择器".我正在使用,performSelector:withObject:因为尝试直接调用选择器会导致错误"'MYParser'没有可见的@interface'声明选择器'initWithStream:'."
我的测试套件已GCC_WARN_UNDECLARED_SELECTOR关闭,但这些都是错误,而不是警告.当测试需要覆盖可能未实现该方法的情况时(即使作为定义),我如何测试对象的init方法呢?
该方法可能尚未实现,因为我正在编写我的测试; 这是对的,还是我应该首先编写我的类定义,然后是我的测试,然后是实际的实现?(我正在寻找关于这一点的共识和最佳实践,而不仅仅是意见.)
我的代码结构是:
.gitignore
my-service << this is a file without an extention
charts
| my-service << this is a folder
| | file1
| | file2
Run Code Online (Sandbox Code Playgroud)
当我在我的gitignore中写道时,my-service它忽略了my-service文件和my-service文件夹.如何只忽略根目录中的文件,而不是子目录?