在使用版本控制中的源代码时,我想部分自动创建GNU样式的ChangeLog条目.将add-changelog-entry-other-window一个文件的时间和工作你必须访问使用它的文件.
我想要看到的是有一些命令可以输出diff -u -p(或者与VC模式集成以便它可以处理svn diff等)并立即创建所有骨架条目.
例如,如果svn status显示
D file1.c
M file2.c
A file3.c
Run Code Online (Sandbox Code Playgroud)
命令会创建
2009-09-05 My Name <my.email>
* file1.c: Removed.
* file2.c: WRITE YOUR CHANGES HERE
* file3.c: New.
Run Code Online (Sandbox Code Playgroud)
更好的是,如果它可以在某种程度上解析某些语言中已更改的文件,那么它可以提供:
* file2.c (new_function): New function.
(deleted_function): Removed.
(changed_function): WRITE YOUR CHANGES HERE
Run Code Online (Sandbox Code Playgroud)
我在Emacs手册中找到了这个功能,但我不知道如何在这里应用它.
有什么建议?谢谢.
编辑:一个答案建议vc-update-change-log.不幸的是,它只支持CVS,它通过查询已经提交的VC日志来创建ChangeLog条目.因此,即使它支持svn和其他,也不可能在同一次提交中提交更改和ChangeLog.
EDIT2:显然add-changelog-entry-other-window(Cx 4 a)不仅可以从被访问文件中运行,还可以从涉及该文件的diff hunk运行.(来源)这几乎就是我要找的.这与遍布所有帅哥的elisp循环一起应该解决它.
我Grails在IntellijIDEA 11.1.3中创建了新项目并尝试运行它.
当我打开http://localhost:8080/application/dbdoc(访问控制器的默认操作grails.plugin.databasemigration.DbdocController)时,我不断收到消息:
Changelog changelog.groovy not found
Run Code Online (Sandbox Code Playgroud)
虽然,文件changelog.groovy存在于我项目的文件系统中./grails-app/migrations.我使用命令生成它:
grails dbm-create-changelog changelog.groovy
Run Code Online (Sandbox Code Playgroud)
现在它有以下内容:
databaseChangeLog = {
changeSet(author: "Edward (generated)", id: "changelog") {
// TODO add changes and preconditions here
}
}
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来使它工作?
我尝试记录我的JPA实体的任何更改.因此,每个实体都从一个抽象实体类继承,该实体类具有一个LogEntry对象列表.
AbstractEntity类:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@EntityListeners(ChangeListener.class)
public abstract class AbstractEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Long version;
@Temporal(TemporalType.DATE)
private Date validFrom;
@Temporal(TemporalType.DATE)
private Date validTo;
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "abstractEntity")
private List<LogEntry> logEntry = new ArrayList<LogEntry>();
//getter and setter
}
Run Code Online (Sandbox Code Playgroud)
LogEntry类:
@Entity
public class LogEntry extends AbstractEntity {
@ManyToOne
@JoinColumn
protected AbstractEntity abstractEntity;
@ManyToOne
@JoinColumn
protected Person person; // creator or updater
@Column(updatable=false, insertable=false, columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
@Temporal(TemporalType.TIMESTAMP) …Run Code Online (Sandbox Code Playgroud) 我想看看每个版本的JavaScript中所做的更改列表.我也有兴趣计划在JavaScript中添加什么以及何时计划新的realease.
您知道可以找到此信息的任何网站吗?
谢谢
我有一个由JPA管理的实体类,我有一个实体需要在其属性中进行loged更改.JPA是否提供了处理此类要求的任何方法?
我试图实现一种跟踪数据更改并为我的应用程序创建历史日志的方法。因为我正在使用 EclipseLink,所以应该很容易并且可以像他们在 EclipseLink 常见问题解答上写的那样获得更改 第一个解决方案有效,但基于第二个事件的方法无效。每次引发事件时,ObjectChangeSet 为空。
我不是简单地使用 HistoryPolicy 的原因是我不想将有关登录用户(而不是 db 用户)的信息和更改的数据存储到单独的表中。我搜索了很多,但找不到任何解决此问题的方法。
这是我的实体类:
@Entity
@EntityListeners(HistoryEventListener.class)
@Table(name = "t_users")
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GENSEQ_USERS")
@SequenceGenerator(name = "GENSEQ_USERS", sequenceName = "SEQ_USERS", allocationSize = 1, initialValue = 1)
private Integer id;
@Column(nullable = false)
private String userid;
...
}
Run Code Online (Sandbox Code Playgroud)
这是我的 DescriptorEventAdapter 类:
public class HistoryEventListener extends DescriptorEventAdapter {
@Override
public void postUpdate(DescriptorEvent event) {
ObjectChangeSet changeSet = …Run Code Online (Sandbox Code Playgroud) Python 包具有使用 CHANGES.txt记录公共 API 更改的最佳实践(参见示例)。有像zest.releaser这样的工具可以自动进行包发布和发行说明维护。
NPM 包是否有记录更改(又名 ChangeLog)的最佳实践?(或者人们是否希望从 Github 历史等中理解)
NPM 包在做 NPM 包发布时是否有维护变更日志的自动化工具,以便在 ChangeLog 中记录发布日期和版本号?
我找到了npm-release脚本,但它的功能仅限于标记和推出新的 NPM 包。
来自 Python 的 CHANGES.txt 示例:
Changelog
=========
1.0.0-dev (Unreleased)
----------------------
- Added feature Z.
[github_userid1]
- Removed Y.
[github_userid2]
1.0.0-alpha.1 (2012-12-12)
--------------------------
- Fixed Bug X.
[github_userid1]
Run Code Online (Sandbox Code Playgroud) 我一直使用svn log命令在subversion中生成更改日志.为了便于阅读,我想在每个修订版的评论后添加换行符.如果输出最初显示如下:
------------------------------------------------------------------------
Revision 1
------------------------------------------------------------------------
Revision 2
------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
------------------------------------------------------------------------
Revision 1
------------------------------------------------------------------------
Revision 2
------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我尝试批量使用以下命令:
FOR /L %%i IN (starting_revision, 1, ending_revision) DO (
svn log branch_name -r %%i --incremental >> output.txt
echo. >> output.txt
echo. >> output.txt
)
Run Code Online (Sandbox Code Playgroud)
这似乎最初起作用,但由于不是每个修订都是针对我正在处理的分支,它最终在文本文件的某些部分打印了额外的换行符.有谁知道我怎么可能避免这个问题?
这是我目前正在处理的包。
这是我第一次尝试强制执行传统的变更日志格式并使用语义发布版本控制。发布本身运行良好,我正在对 travis CI 进行测试,构建包并将其发布到 npm,创建新版本和 git 标签。还创建了一个GitHub 包版本,在某种程度上,它替代了单独的变更日志文件。
我接下来要实现的是根据最新版本更改自动生成 ChangeLog。据我了解conventional-changelog可以帮助解决这个问题,但是每当我运行时:
$ conventional-changelog -p eslint-plugin-protractor -i CHANGELOG.md -w -r 0
Run Code Online (Sandbox Code Playgroud)
我正在将所有更改分组在0.0.0-semantically-released版本下,这是version我放入的存根package.json以避免在npm install.
我做错了什么,如何为每个语义发布版本生成日志?
我有以下别名.gitconfig来自动化我的标签注释(使用我的 git tag-release 别名):
[alias]
lm = log --pretty=format:'(%h) %s%n%w(72,10,10)%b%w(72,0,0)by %an on %ad%n' --date=local --no-merges
rn = "!f() { git lm \"${1:-$(git describe --abbrev=0 --tags)}\"..\"${2:-$(git rev-parse HEAD)}\"; }; f \"$@\""
tag-release = "!f() { { echo \"Release $1\n\nChanges:\n\n\"; git rn; } | git tag -a \"$1\" -F -; }; f \"$@\""
Run Code Online (Sandbox Code Playgroud)
我的问题是,由于%w(72,10,10)%b,我的提交正文向右移动 10 个空格并用 72 个字符换行,这有时会给出格式奇怪的标签注释,因为提交消息本身也包含换行符。我想知道是否有办法获取提交正文,替换换行符,然后将其包装为 72 个字符并缩进 10 个字符?任何帮助表示赞赏!