如何在修订控制下处理特定于平台的代码


How to handle platform specific code under revision control

我们在Windows和Linux上都有使用SVN的Web开发人员。一些PHP文件引用本地路径(例如Smarty/Geolocation库),因此在各自的平台上是不同的。我们需要对这些文件进行修订,但开发人员开始在这些特定文件上添加 svn:ignore 属性以防止冲突。我能想到的唯一解决方案是放置一些代码来确定正在运行的操作系统,但这对于生产代码来说似乎是臃肿的。

if (PHP_OS == "WIN32" || PHP_OS == "WINNT") {
        define('SMARTY_DIR', 'c:/xampp/smarty/');
    } else { 
        define('SMARTY_DIR', '/usr/local/lib/php/Smarty/');
    }

我很想听听其他人是如何解决这个问题的。

执行此操作的典型方法是使用 config.php.template 文件。 模板文件受版本控制,开发人员会将其复制到 config.php 用于其本地设置。