小编Cal*_*ion的帖子

使用Git,子树合并具有子模块的外部项目的最佳方法是什么?

我正在使用Git存储库来处理与我正在开发的网站相关的所有内容.存储库包含与站点相关的所有文件,包括文档,模型,原始分层图像等,以及我放在www子目录中的Web根目录.

我正准备开始整合我选择用于项目其余部分的CMS; CMS是一个开源项目,也使用Git进行管理(如果重要的话,托管在GitHub上).显然CMS需要在www子目录中,但它不会是唯一的东西 - 会有CSS文件,图像,CMS的模板等等.因此,我选择了使用子树合并策略将外部项目添加到我的存储库.因为我可能在某个时候想要修改原始项目并提供更改,我已经从GitHub克隆了CMS存储库并从我的克隆中完成了子树合并.

问题是,外部项目(即CMS)具有我想要包含的子模块.确保子模块集成到主项目中的最佳方法是什么?我是否必须为每个子模块进行子树合并?

我不太可能想要修改子模块,但我可能会有一两个子模块.

git version-control subtree git-submodules

4
推荐指数
1
解决办法
1264
查看次数

如何在Objective-C中对init方法进行单元测试?

我使用新的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方法呢?

该方法可能尚未实现,因为我正在编写我的测试; 这是对的,还是我应该首先编写我的类定义,然后是我的测试,然后是实际的实现?(我正在寻找关于这一点的共识和最佳实践,而不仅仅是意见.)

xcode unit-testing objective-c xctest

2
推荐指数
1
解决办法
1843
查看次数

git忽略文件而不是具有相同名称的文件夹

我的代码结构是:

.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文件夹.如何只忽略根目录中的文件,而不是子目录?

git gitignore

0
推荐指数
1
解决办法
568
查看次数