Giter VIP home page Giter VIP logo

humandiff's Introduction

HumanDiff

Diff to human-readable differences file.

Produces human readable / editable "diff" files similar to those generated by most VCS to aid conflict resolution intended to facilitate the task of merging two different files without having them under any version control system.

Installation

npm install -g humandiff

Usage

Usage: humandiff [options] <oldFile> <newFile> [oldFileLabel] [newFileLabel]

Human readable "diff" tool with no data loss.

  Differenced sections are labeled with oldFileLabel and newFileLabel if provided.

  File path is used otherwise.


Options:

  -V, --version                      output the version number
  -o, --acceptOld <cfgOptions_list>  Comma-separated list of options to automatically accept old version
  -n, --acceptNew <cfgOptions_list>  Comma-separated list of options to automatically accept new version
  -i, --ignoreCase                   Perform case-insensitive comparsion
  -h, --help                         output usage information


Exit statuses:
   Possible return status codes are:

      0: Ok
         Compare files are identical (~diff)
         ...OR if conflicts were automatically resolved.
      1: Conflict
         Files differ (~diff)
         ...AND conflicts couldn't automatically resolved.
            (Output file needs human review)
      2: Binary
         Tryed to compare binary file (=diff)
         (RESERVED, but Not yet used)
      5: Error
         Some error happened.
         (Details logged to stderr)

   NOTE: Defined as close as possible to diff exit status.
   See: http://tldp.org/LDP/abs/html/filearchiv.html#DIFFERR2


Advanced features:

  Automated resolution:
      Given any differnce section, if it consists in single row both sides
      and both consists in property definiton of the form 'propName = xxxx'.
      If propName is present on --acceptOld or --acceptNew list, proper
      version is automatically selected (printed) and no conflict block is
      rendered. It also works if property is not present either side (was
      removed or added in newFile) or, sometimes, even if its position changes
      (removed from its original position and added in another place).

  Case insensitive comparsion:
      if --ignoreCase option (or -i) option is used, case-insensitive
      comparsion is performed. In this mode, propNames in --acceptOld and
      --acceptNew are threaten in case insensitive manner so, for example
      "someoption" and "SomeOption" property names are considered the same
      and thus selected version is picked (in its original case). In case of
      rows with no other difference than upper/lower-case letters, oldFile
      verison is used

Output example

  Diff example file.

  This row is the same.

  <<<<<<<< test/a.txt
  This row is not the same.
  ========
  This row is different.
  >>>>>>>> test/b.txt

  This is also the same.
  And this too.

  <<<<<<<< test/a.txt
  This row is missing.
  ========
  >>>>>>>> test/b.txt

  More data.

  <<<<<<<< test/a.txt
  ========
  This row is added.
  >>>>>>>> test/b.txt

  And much more data.

  <<<<<<<< test/a.txt
  More differences.
  ========
  Another different block.
  This also added more rows.
  >>>>>>>> test/b.txt

  And much more data again.

More...

See CHANGELOG file.

License

GNU GENERAL PUBLIC LICENSE

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Contributing

If you are interested in contributing with this project, you can do it in many ways:

  • Creating and/or mantainig documentation.

  • Implementing new features or improving code implementation.

  • Reporting bugs and/or fixing it.

  • Sending me any other feedback.

  • Whatever you like...

Please, contact-me, open issues or send pull-requests thought this project GIT repository

humandiff's People

Contributors

bitifet avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.