我在项目中有一个更改日志文本文件。我想从2个标签之间获取此文件的更改列表。我准备了这个命令:
git diff tag1..tag2 file | grep -v -e "+++ b/file" -e "@@" | grep "+"
作为输出,我收到标记为已添加的所有行(以+
开头)。但是在它们之间可能存在一些先前存在的线,但是在提到的标签之间进行了修改(例如纠正了拼写错误)。是否有任何选项允许仅过滤新行或仅修改过的行?或者也许任何允许控制线条修改的%条件的选项都打印在输出中?
答案 0 :(得分:0)
Git本身并不这样做,如果你关心语义而不是简单的语法,那么这通常是一个难题。但是,Git会附带一个名为'use strict';
const path = require('path');
const loaders = require('./webpack/loaders');
const plugins = require('./webpack/plugins');
const applicationEntries = process.env.NODE_ENV === 'development'
? ['webpack-hot-middleware/client?reload=true']
: [];
const mainEntry = process.env.NODE_ENV === 'development'
? './src/sample/index.tsx'
: './src/lib/index.tsx';
module.exports = {
entry: [mainEntry].concat(applicationEntries),
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js',
publicPath: '/',
sourceMapFilename: '[name].js.map',
chunkFilename: '[id].chunk.js',
},
devtool: process.env.NODE_ENV === 'production' ?
'source-map' :
'inline-source-map',
resolve: {
root: path.resolve('./src'),
extensions: [
'',
'.webpack.js',
'.web.js',
'.tsx',
'.ts',
'.js',
'.json',
],
},
plugins: plugins,
devServer: {
historyApiFallback: { index: '/' },
},
module: {
preLoaders: [
loaders.tslint,
],
loaders: [
loaders.tsx,
loaders.html,
loaders.css,
loaders.scss,
loaders.eot,
loaders.svg,
loaders.ttf,
loaders.woff,
loaders.json,
{
test: /\.png$/,
loader: 'url-loader',
query: { mimetype: 'image/png' },
},
],
},
externals: {
'react/lib/ReactContext': 'window',
'react/lib/ExecutionEnvironment': true,
'react/addons': true,
},
};
的后处理过滤器。 Perl脚本中的代码执行您感兴趣的语法分析,因此可以对其进行修改以生成您想要的内容。
请参阅https://github.com/git/git/tree/master/contrib/diff-highlight以获取差异突出显示的来源。阅读自述文件以查看有关此类分析中涉及的语义问题的说明。请注意,as of Git version 2.9,突出显示脚本与Git的其余部分一起安装,因此您不必将其从贡献源区域中删除。
答案 1 :(得分:0)
不幸的是,我无法找到任何令人满意的答案(也不能在其他任何地方找到),所以我必须自己编写必要的脚本。