# le-shell **Repository Path**: jacob-lab/le-shell ## Basic Information - **Project Name**: le-shell - **Description**: No description available - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-06-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 背景 曾几何时,小伙伴们需要从 `TortoiseSVN(俗称小乌龟)` 筛选文件,然后获取选中文件的路径。切换 `git` 之后,貌似不能很优雅地解决当前遇到的这个痛点,因此便有了 `get-list-of-changed-files.sh`。 ## 脚本功能说明 从 `git log` 获取变更文件列表,方便小伙伴 copy && paste,节省时间。 ## 脚本参数说明 `get-list-of-changed-files.sh` 脚本接收三个参数,缺一不可。 参数分别为:`author`、`since_commit`、`until_commit`。脚本使用这三个参数对 `git log` 进行过滤,只获取指定提交者和指定的提交范围内的日志,排除其他无关的 commits。 author:`commit` 的提交者,如 `Jimmy` since_commit:提交范围的起始点,获取文件列表时**不包含**该提交点 until_commit:提交范围的结束点,获取文件列表时**包含**该提交点 > since_commit 与 until_commit 在时间上的关系,since_commit 早于 until_commit。(现在是 t1 时间,过了一会,到了 t2 时间,我们称 t1 早与 t2) ## 脚本缺陷 假设筛选的列表内包含一个 A 文件。在 t1 时,我对 A 文件修改了某些内容,然后提交到本地仓库。过了一会,到了 t2,A 文件被删除。这时脚本跑出来的文件列表会包含 A 文件,因此需要**人工再次过滤**。 ## 运行说明 1. 将脚本文件 copy 到项目的根路径。 2. 切换到指定的分支,如 `master`。 3. 执行以下命令,给脚本文件赋于执行权限 ```shell chmod u+x get-list-of-changed-files.sh ``` 4. 传入参数,调用脚本 ```shell ./get-list-of-changed-files.sh Jimmy 1957044 db419c3 ``` ## 运行图示 ![2017-06-20 at 13.10](https://ws4.sinaimg.cn/large/006tNc79gy1fgrldrsom3j30kr08n761.jpg) **PS: Windows 平台,建议在 `git bash` 运行。**