261 lines
10 KiB
Plaintext
261 lines
10 KiB
Plaintext
*dirdiff.txt* Diff and merge two directories recursively
|
|
|
|
Author: William Lee <http://wlee.net/> <wl1012@yahoo.com>
|
|
License: BSD-like (see |dirdiff-license|)
|
|
|
|
INTRODUCTION *dirdiff* *DirDiff*
|
|
|
|
This plugin enables you to run vim-diff on two directories recursively. You
|
|
can also perform batch or individual merge through a simple interface.
|
|
|
|
REQUIREMENTS *dirdiff-requirements*
|
|
|
|
- Make sure you have GNU diff in your path on Unix and Windows. I only
|
|
tested this on cygwin's version on Windows. If you have a diff that
|
|
doesn't support -x or -I flag, do not set variable g:DirDiffExcludes and
|
|
g:DirDiffIgnore to "". It should still work.
|
|
- On Windows, you need to have "xcopy", "copy", "del", and "rd" in your
|
|
path.
|
|
- On Unix, you need to have "rm" and "cp" in your path.
|
|
|
|
INSTALLATION *dirdiff-installation*
|
|
|
|
cd ~/.vim/bundle
|
|
git clone git://github.com/will133/vim-dirdiff
|
|
|
|
USAGE *dirdiff-usage* *:DirDiff*
|
|
>
|
|
:DirDiff <A:Src Directory> <B:Src Directory>
|
|
<
|
|
|
|
For example:
|
|
>
|
|
:DirDiff ../something/dir1 /usr/bin/somethingelse/dir2
|
|
<
|
|
|
|
MAPS *dirdiff-maps*
|
|
|
|
The following commands can be used inside the diff window:
|
|
|
|
*dirdiff-enter* *dirdiff-o*
|
|
<Enter>, <o> Diff open: open the diff file(s) where your cursor is
|
|
at
|
|
|
|
*dirdiff-s*
|
|
<s> Synchronize the current diff. You can also select a
|
|
range (through visual) and press 's' to synchronize
|
|
differences across a range.
|
|
|
|
There are 6 Options you can choose when you hit <s>:
|
|
|
|
1. A -> B
|
|
Copy A to overwrite B
|
|
If A's file actually points to a directory, it'll
|
|
copy it to B recursively.
|
|
2. B -> A
|
|
Copy B to overwrite A
|
|
If B's file actually points to a directory, it'll
|
|
copy it to A recursively.
|
|
3. Always A
|
|
For the rest of the items that you've selected,
|
|
synchronize like (1).
|
|
4. Always B
|
|
For the rest of the items that you've selected,
|
|
synchronize like (2).
|
|
5. Skip
|
|
Skip this diff entry.
|
|
6. Cancel
|
|
Quit the loop and exit.
|
|
|
|
*dirdiff-u*
|
|
<u> Diff update: update the diff window
|
|
|
|
*dirdiff-x*
|
|
<x> Sets the exclude pattern, separated by ','
|
|
|
|
*dirdiff-i*
|
|
<i> Sets the ignore pattern, separated by ','
|
|
|
|
*dirdiff-a*
|
|
<a> Sets additional arguments for diff, eg. -w to ignore
|
|
white space, etc.
|
|
|
|
<q> Quit DirDiff
|
|
|
|
The following comamnds can be used in the Vim diff mode if this is global flag
|
|
is set to 1 (default to 0): >
|
|
|
|
let g:DirDiffEnableMappings = 1
|
|
<
|
|
|
|
Note: by default these would not be added, unlike previous version. It is
|
|
preferable to not change people's mappings by default.
|
|
|
|
*dirdiff-leader-dg*
|
|
<Leader>dg Diff get: maps to :diffget<CR>
|
|
|
|
*dirdiff-leader-dp*
|
|
<Leader>dp Diff put: maps to :diffput<CR>
|
|
|
|
*dirdiff-leader-dj*
|
|
<Leader>dj Diff next: (think j for down)
|
|
|
|
*dirdiff-leader-dk*
|
|
<Leader>dk Diff previous: (think k for up)
|
|
|
|
|
|
OPTIONS *dirdiff-options*
|
|
|
|
You can add the following "let" lines in your .vimrc file in order to customize
|
|
the plugin's behavior.
|
|
|
|
Enable additional mappings in diff mode (set to 1 to enable mappings).
|
|
Default to do nothing: >
|
|
|
|
let g:DirDiffEnableMappings = 0
|
|
<
|
|
Sets default exclude pattern: >
|
|
|
|
let g:DirDiffExcludes = "CVS,*.class,*.exe,.*.swp"
|
|
|
|
Sets default ignore pattern: >
|
|
|
|
let g:DirDiffIgnore = "Id:,Revision:,Date:"
|
|
|
|
If DirDiffSort is set to 1, sorts the diff lines: >
|
|
|
|
let g:DirDiffSort = 1
|
|
|
|
Sets the diff window (bottom window) height (rows): >
|
|
|
|
let g:DirDiffWindowSize = 14
|
|
|
|
Ignore case during diff: >
|
|
|
|
let g:DirDiffIgnoreCase = 0
|
|
|
|
Dynamically figure out the diff text. If you are using and i18n version of
|
|
diff, this will try to get the specific diff text during runtime. It's turned
|
|
off by default. If you are always targetting a specific version of diff, you
|
|
can turn this off and set the DirDiffText* variables accordingly: >
|
|
|
|
let g:DirDiffDynamicDiffText = 0
|
|
|
|
String used for the English equivalent "Files ": >
|
|
|
|
let g:DirDiffTextFiles = "Files "
|
|
|
|
String used for the English equivalent " and ": >
|
|
|
|
let g:DirDiffTextAnd = " and "
|
|
|
|
String used for the English equivalent " differ"): >
|
|
|
|
let g:DirDiffTextDiffer = " differ"
|
|
|
|
String used for the English equivalent "Only in "): >
|
|
|
|
let g:DirDiffTextOnlyIn = "Only in "
|
|
|
|
OPTIONS EXAMPLE *dirdiff-options-example*
|
|
|
|
This is an example for setting DirDiffExcludes and DirDiffIgnore in addition
|
|
to enabling the plugin's mappings. Note that patterns are separated with
|
|
commas and no spaces.
|
|
|
|
For example, you can set these in your .vimrc file: >
|
|
|
|
let g:DirDiffExcludes = "CVS,*.class,*.o"
|
|
let g:DirDiffIgnore = "Id:"
|
|
" ignore white space in diff
|
|
let g:DirDiffAddArgs = "-w"
|
|
let g:DirDiffEnableMappings = 1
|
|
<
|
|
|
|
WARNING *dirdiff-warning*
|
|
|
|
This script can copy and remove your files. This can be powerful (or too
|
|
powerful) at times. Please be careful and use version control!
|
|
|
|
LICENSE *dirdiff-license*
|
|
|
|
Copyright (c) 2001-2015 William Lee.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are
|
|
met:
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
* Neither the name William Lee nor the names of its contributors may be
|
|
used to endorse or promote products derived from this software without
|
|
specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
|
WILLIAM LEE AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
THANKS *dirdiff-thanks*
|
|
|
|
Florian Delizy for the i18n diff patch
|
|
Robert Webb for his sorting function
|
|
Wu WeiWei for his Chinese diff patch
|
|
Salman Halim, Yosuke Kimura, and others for their suggestions
|
|
|
|
HISTORY *dirdiff-history*
|
|
|
|
1.1.5 - Fixed split windows problems caused by some .vimrc settings.
|
|
1.1.4 - Fixed split windows problems caused by some .vimrc settings.
|
|
1.1.3 - Applied the patch to 1.1.2 by Wu WeiWei in order to make diff
|
|
that's localized in Chinese work.
|
|
1.1.2 - Applied the patch to 1.1.0 instead of 1.0.2. Please do not use
|
|
1.1.1
|
|
1.1.1 - Make it work with filename with spaces. (Thanks to Atte Kojo)
|
|
1.1.0 - Added support for i18n (tested on a French version for now only).
|
|
Can dynamically figure out the diff strings output by diff.
|
|
1.0.2 - Fixed a small typo bug in the quit function.
|
|
1.0.1 - Ensure the path separator is correct when running in W2K
|
|
1.0 - Fixed a bug that flags errors if the user use the nowrapscan option.
|
|
Implements a quit function that exit the diff windows.
|
|
0.94 - Fixed a bug where the diff will give incorrect A and B file due to
|
|
similarity of directory names. Allow you to modify the diff
|
|
argument.
|
|
0.93 - Opps, messed up the key mapping usage.
|
|
0.92 - Doesn't use n and p mappings since it confuses the search next key
|
|
mapping and causes some bugs. Minor modification to change the
|
|
exclude and ignore pattern.
|
|
0.91 - Clean up delete routine.
|
|
- Added interactive mode.
|
|
- Added multiple entries of exclude and ignore pattern.
|
|
- Custom configuration through global variables.
|
|
- Change exclude and ignore patterns on the fly.
|
|
|
|
0.9 - Reorganization of the interface. Much simplier dialog for
|
|
synchronization. Support for range synchronization option (REALLY
|
|
powerful)
|
|
- Removed unnecessary key bindings. All key bindings are local to
|
|
the diff window. (except for the \dg and \dp)
|
|
|
|
0.8 - Added syntax highlighting.
|
|
- Enter and double-click in buffer opens diff.
|
|
- Removed dependency on "sort"
|
|
- Removed usage of registry and marker
|
|
- Code cleanup and some bug fixes
|
|
- On Windows the diff command will use the -i flag instead
|
|
- Changed mappings for diff next (\dj) and diff previous (\dk)
|
|
- Added mappings for vim diff mode (\dg, \dp)
|
|
|
|
0.7 Initial Release
|
|
|
|
vim:tw=78:et:ft=help:norl:
|