3

这个问题与我在 SO 上看到的其他问题相似,但并不完全相同。其他类似的问题要么无法添加 .a 文件(我可以显式添加),要么存在全局忽略问题(我想我没有。)

这个问题是关于如何更改似乎不是由 global-ignores 引起的默认 svn 行为(我可以告诉)。这是一个典型的故障模式:

  • 我想添加一个 3rd 方库(例如 Flurry),所以我这样做了svn add 3rdParty/flurry
  • svn 显示添加了一堆文件。我没有注意到它决定不添加libFlurry.a.
  • 我承诺。
  • 我的客户无法构建,因为他们缺少 .a 文件
  • 我返回并svn add 3rdParty/flurry/libFlurry.a提交,按预期工作
  • 在客户端一切都很好。

奇怪的是,我没有设置任何全局忽略。~/.subversion/config这是我文件中的一个片段:

### Section for configuring miscelleneous Subversion options.
# [miscellany]
### Set global-ignores to a set of whitespace-delimited globs
### which Subversion will ignore in its 'status' output.
# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store

请注意,无论如何global-ignores,(a)已被注释掉并且(b)不包含。*.a

在项目开始时,我svn propset svn:ignore -F使用了一个包含以下内容的文件:

### General
build
bin
*.pbxuser
*.mode1v3
*.class
jars
Logs
logs
xcuserdata
*.xcuserdatad

### Extra
referenceMaterial
tmp
crashlogs
symbols-xxx

### AppEngine
.metadata
.settings
RemoteSystemsTempFiles
appengine-generated

### 3rd party
MP1.1

所以这似乎不是原因。

编辑:我在 Mac OS-X (10.8.latest) 和 svn 1.8.1 上,尽管只要我记得,事情就是这样。

我的问题是:我怎样才能做到这一点,当我这样做时svn add somedirectory,.a 文件可以随身携带?

谢谢!

4

1 回答 1

4

如果您没有设置全局忽略,它将默认为*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store. 如果你想覆盖这个默认值,你需要global-ignore自己设置。

现在这是一个好主意:

您不想添加特定于您的存储库的机器的编译代码。想象一下,如果有人在 Linux 系统上想要编译您的代码。这些*.a库与 Linux 不兼容。事实上,如果您更新操作系统,这些库可能不再与您的 Mac 兼容。您基本上是在创建一个注定会失败的构建过程。

你最好在你的Makefile. 如果这些是标准库,您需要确保您-L的设置正确以找到这些库。或者,您可以设置 Makefile 来专门为您的系统构建这些库。如果需要,让 Makefile 从 Subversion 下载库项目,构建库,然后复制它们以供您使用。

另一种可能性是设置一个发布服务器来根据机器、操作系统和您需要的版本来存储这些库。这样,您将拉下正确的版本。如果这些是第三方预编译库,这可能是这样做的唯一方法。作为构建过程的一部分,您可以使用sftp或提取这些库。wget

于 2013-09-12T19:37:58.397 回答