确定何时在文件或文件夹上设置属性的最简单方法是什么?基本上,我正在寻找一种适用于属性的"svn blame".
log子命令使用户可以获取文件或文件夹的完整历史记录,包括修改属性的时间.但是,它不区分属性修改和其他类型的修改,这当然也意味着它不会告诉您有关特定属性的历史记录.
status命令区分属性和其他类型的修改,但仅适用于工作副本.
Blame本身只支持文件,而不支持目录,它适用于内容,而不是属性.
想法?
我在生产环境中有一个大型应用程序,我正试图在版本控制下移动.因此,我创建了一个新的repo并导入了应用程序,减去了不应受版本控制的各种目录和文件.现在,我需要将已安装的副本作为结帐(但仍保留额外的文件).此时,在最新版本的SVN中,我只需使用--force选项在现有目录上进行检查.但遗憾的是,我有一个古老版本的SVN,从之前添加--force选项(并且还无法升级......长篇故事).
因此,我将应用程序检出到另一个目录,并希望简单地将所有.svn目录复制到原始目录中,从而将原始文件转换为结帐,同时留下额外的文件.现在,也许我只是度过了艰难的一天,错过了普通网站上的一些东西,但我似乎无法弄清楚这一点.以下是我到目前为止尝试过的方法:
使用rsync:我似乎无法正确组合include和exclude指令来递归捕获所有.svn目录,但没有别的.
使用cp:我无法想出让它在整个应用程序中贯穿所有.svn目录的好方法.
使用find with -exec cp:我遇到了问题,找到的文件的路径名的前导部分弄乱了目标路径.我可以使用-printf'%P'排除它,但这似乎不会进入exec的{}替换.
使用find with xargs to cp:我遇到了在发送父母之前发现通过子目录发送的问题.不幸的是,find没有--bread选项.
有什么想法吗?
其他信息:
当使用PHPUnit测试依赖于数据库的类时,getDataSet()方法提供数据作为整个测试套件的测试夹具.这很好,但是如何为特定测试提供数据?特别是在使用最小化数据集时,每个测试需要在所有测试使用的公共数据之上使用不同的数据库数据,这并不罕见.我知道PDO对象是可用的,在我们的例子中,应用程序的本机数据库对象也可用(意思是,我们可以在应用程序中运行原始查询或使用其他功能),但是有一种方法可以插入数据这是由PHPUnit的DataSet容器驱动的,因此所有测试数据都以相同的方式处理,以提高清晰度并简化维护.
有没有办法实现这个目标?
我终于开始用PHP探索特征了.我认为第一个尝试的是将配置位注入类中.如果我正在使用DIC,我可能在任何需要配置对象的类中都有这样的代码:
protected function SetConfig($config) {
$this->config = $config;
}
protected $config;
Run Code Online (Sandbox Code Playgroud)
这似乎很适合于特性,以避免在整个地方都有样板代码,所以我可能会创建:
trait Config {
protected function SetConfig($config) {
$this->config = $config;
}
protected $config;
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
class Foo {
use Config;
public function __construct() {
//can now use $this->config
}
}
Run Code Online (Sandbox Code Playgroud)
那很棒.现在让我们说我想创建第二个特征,例如,用于记录:
trait Logger {
protected function SetLogger($logger) {
$this->logger = $logger;
}
protected $logger;
}
Run Code Online (Sandbox Code Playgroud)
我可以这样使用:
class Foo {
use Logger;
public function __construct() {
//can now use $this->logger
}
}
Run Code Online (Sandbox Code Playgroud)
也很棒.现在问题出现了,如果这两个特征想要互相使用.一个logger类需要注入一个配置对象似乎很合理,这意味着这样做:
trait Logger {
use Config;
protected …Run Code Online (Sandbox Code Playgroud)