gpt4 book ai didi

java - 找出最初是谁在 Subversion 中添加文件的有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:20 25 4
gpt4 key购买 nike

除了手动解析历史记录之外,是否有一种有效的方法以编程方式找出最初是谁在 Subversion 中添加了文件?最好使用 SVNKit Java 库或在命令行上。

我已将最新版本 check out 到工作副本中。 svn info 为我提供了我需要的所有其他信息,但不是初始作者(我的意思是,谁在文件上运行了 svn add)。

解析输出的问题是重命名。例如,如果一个文件在第 10 版中以 myfile.txt 开始,并在第 12 版中重命名为 myFancyFile.txt,我仍然需要第 10 版的原作者。

我不需要有关已删除文件或文件夹的任何信息,只需要有关我当前工作副本中存在的文件的信息。谢谢

我为什么要这样做?我们正在从文件中提取元数据,我需要知道谁最初 checkin 了文件。该报告每晚生成。

最佳答案

.svn/wc.db 不包含有关节点创建属性的信息,因为查看数据库会发现:

sqlite> .schema nodes
CREATE TABLE NODES ( wc_id INTEGER NOT NULL REFERENCES WCROOT (id), local_relpath TEXT NOT NULL, op_depth INTEGER NOT NULL, parent_relpath TEXT, repos_id INTEGER REFERENCES REPOSITORY (id), repos_path TEXT, revision INTEGER, presence TEXT NOT NULL, moved_here INTEGER, moved_to TEXT, kind TEXT NOT NULL, properties BLOB, depth TEXT, checksum TEXT, symlink_target TEXT, changed_revision INTEGER, changed_date INTEGER, changed_author TEXT, translated_size INTEGER, last_mod_time INTEGER, dav_cache BLOB, file_external TEXT, PRIMARY KEY (wc_id, local_relpath, op_depth) );

因此,您需要查询存储库

对于 SVNKit,我会在此处使用 SVNRepository#getFileRevisions 和/或 SVNRepository#getLocations(对于重命名的文件)并从第一个报告的修订中获取所需的信息。

如果您需要许多文件的信息(正如我从您的最后一句话中了解到的那样),您还可以考虑运行日志并从那里获取信息。

关于java - 找出最初是谁在 Subversion 中添加文件的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16189095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com