以下是我的问题的详细信息:
我有一个目录结构,看起来像:

哪里ios-src是我所有的项目和源文件,ios-libs是我所有的git子模块住的地方.
当我将项目克隆到另一台机器时,ios-libs目录中的所有文件在XCode(v4.3.2)中显示为红色(或缺失),但文件存在于磁盘上.
如果我从XCode中删除文件并重新添加它们,它不会解决问题,它们仍然是红色的,项目无法编译.
这些目录都标记为Relative to Group.
如果我在检查器中选择文件,我会得到:

这揭示了错误的相对路径.如果我选择浏览按钮(在路径右侧)并更正它,我会得到正确的相对路径:

修复它直到我回到原始(我的家)机器.此外,如果我将ios-lib目录移动到它下面ios-src来解决问题,但这是一种解决方法,我想知道解决方案.
似乎我的家用电脑上有一些设置错误,因为它似乎只是在我在那里创建项目时发生的.如果我在任何一台其他计算机上创建项目,那么这些项目就可以在我的一台机器上工作,包括我的家用机器.它们都运行Lion和相同的XCode版本.
我非常感谢任何关于我能解决这个问题的想法.我花了很多时间试图弄明白无济于事.
用例是我必须将某些存储库移动到新服务器.所以这些存储库得到了一个新的URL.
引用这些子模块的父项目需要使用子模块的新URL进行更新.
我想做以下事情.
- 更新.gitmodules文件
- git子模块同步
- git子模块更新
- 提交和推送
但是,由于先前的提交具有.gitmodule的早期版本,如果我签出父项目的先前提交 - 它不会查找旧服务器吗?
为了确保可重复性,我们需要让所有旧提交都能正常工作.有没有想过绕过这个?
我有一个由库和各种应用程序组成的项目:
foo/
foolib/
bar/
baz/
qux/foo/
Run Code Online (Sandbox Code Playgroud)
所有应用程序都链接到foolib,一个静态库.
我希望git在foo上提交记录foolib所在位置的SHA1 ID ,以及foo上的git状态,以报告foolib中是否存在未提交的更改.
但是,我不想让foolib将其副本作为每个应用程序的子目录.除了臃肿之外,如果不提交更改,这将失去在多个应用程序中尝试对foolib进行一些更改的能力.
我已经尝试制作一个指向../foolib的.gitmodules文件,但它似乎被git status完全忽略了.我也尝试在foo中使用foolib作为软链接,但是git似乎将软链接视为文件,而不是关注链接.
我想要的是什么,或者您有任何其他工作流程解决方案?
在我的公共存储库中,结构是相同的,并且每个应用程序(和foolib)都是从公众单独克隆的.
我最近想submodules从GIT我的Android项目中采用,但偶然发现了一些问题.
背景故事
我有多个项目,但许多项目使用相同的外部库(Android库项目),以使GIT更清洁,并使每个项目的GIT包含我为Android库项目使用GIT子模块所需的所有材料.这部分工作正常我将库作为项目的子模块包含在内.
问题
但Android使用这些库项目,基本上是一个常规项目,它被添加到项目中,我只能在Eclipse中添加一次相同的项目.因此,如果我需要一次处理多个项目,我必须使用Eclipse/workspace的多个实例,而不是以常规方式使用Eclipse.
有没有办法在eclipse中只有一个我的库项目实例,同时所有项目都引用它们各自的库?或任何其他建议我应该如何处理这个?
非常感谢任何帮助
我最近把我的一些项目放在github上,让它们成为开源的,但是我无法理解如何正确地构建项目.
我有一个Core项目和另一个依赖于Core项目的项目(还有更多).但是,当用户抓住其中一个项目的副本时,他们会抱怨它缺少Core项目,我必须告诉他们它存在于一个单独的存储库中.
我知道必须有更好的方法来做到这一点.我已经读过关于git子模块但我还没有真正理解它们.
我的问题是,是否有任何易于学习的教程或如何构建我的项目的示例?我正在使用Windows,TortoiseGit,我的项目是在C#中.
在使用git-flow模型使用git进行发行时,我将存储库切换为指向master,tag中的最新提交,然后从tag中进行构建。好的做法是将所有存储库子模块的更改合并到master中,并使其指向master(即master中的最新提交),还是将所有子模块的提交保持不变就足够了吗?
当我发布子模块更新并包含“ --no-fetch”时,如下所示:
git submodule update --remote --no-fetch
Run Code Online (Sandbox Code Playgroud)
该文档指出:
为了确保当前跟踪分支状态,在计算SHA-1之前,update --remote将获取子模块的远程存储库。如果您不想获取,则应使用子模块更新--remote --no-fetch。
我对“ --no-fetch”部分有些困惑。如果我在没有更新的情况下致电更新:
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
我知道将不会执行提取-但这也意味着我不能保证“ 当前跟踪分支状态 ”吗?这到底是什么意思呢?
在哪种情况下,我不希望保证当前的跟踪分支状态?
为什么人们有这个问题?
$ git clone --recursive git@github.com:acani/Chats.git克隆到'聊天'...权限被拒绝(公钥).致命:无法从远程存储库读取.
请确保您具有正确的访问权限并且存储库存在.
https://github.com/acani/Chats/issues/53#issuecomment-118014684
我已经阅读了一些答案,说要将子模块URL从SSH更改为HTTP,但为什么我必须这样做.我不想那样做.我想保留SSH,这样如果我想推送,我就不必在终端输入我的用户名和密码.每个人都可以很好地克隆SSH URL,那么他们为什么不能将它作为子模块递归克隆呢?
我在这里难过.很多这已经到位,它只是我无法弄清楚的包装.
我们有一个微服务架构,有许多独立的存储库.我们使用Docker和Docker Compose来构建和运行开发环境,它的工作非常精彩.
我的问题是如何打包主要的存储库集合.所以,如果我有一个文件夹结构,如:
\
service1
.git
Dockerfile
service2
.git
Dockerfile
service3
.git
Dockerfile
docker-compose.yml
README.md
Run Code Online (Sandbox Code Playgroud)
...其中service1,service2,service3各自都是自己的git存储库.
我首先想到的是使用git子模块,它会工作,但是我们执行政策,要求开发商的工作,而不是关闭主库的库叉由于持续集成的约束和代码审查.我对使用git子模块一点也不感兴趣,甚至在我想到这个警告之前,所以替代解决方案会更受欢迎.
目前我只能想写脚本来存储存储库列表; 为每个运行一个查询,看看登录的开发人员是否有每个分支,如果没有,则创建一个,然后进入主文件夹; 然后启动docker-compose.这似乎是一个可怕的解决方案,足以让我可能只需要编写文档来告诉开发人员如何手动执行此过程...
思考?
谢谢你的时间 :)
我正在创建cocos2d-x游戏并包含上游cocos fom git(它包括一些关键的修复和功能).但是,使用SDKBOX需要修补一些cocos文件(在子模块中).
是否可以将这些文件(甚至更好的补丁)包含到主存储库中?当然,可以分叉cocos2d-x存储库并在那里修补它们,但它使更新更加复杂(创建拉取请求并首先合并它).