9f9ca8be5b628c5701ce414f105aaffae2c76a59
   1/*
   2 * Copyright (C) 2005 Junio C Hamano
   3 */
   4#ifndef DIFF_H
   5#define DIFF_H
   6
   7#define DIFF_FILE_CANON_MODE(mode) \
   8        (S_ISREG(mode) ? (S_IFREG | ce_permissions(mode)) : \
   9        S_ISLNK(mode) ? S_IFLNK : S_IFDIR)
  10
  11extern void diff_addremove(int addremove,
  12                           unsigned mode,
  13                           const unsigned char *sha1,
  14                           const char *base,
  15                           const char *path);
  16
  17extern void diff_change(unsigned mode1, unsigned mode2,
  18                             const unsigned char *sha1,
  19                             const unsigned char *sha2,
  20                             const char *base, const char *path);
  21
  22extern void diff_helper_input(unsigned mode1,
  23                              unsigned mode2,
  24                              const unsigned char *sha1,
  25                              const unsigned char *sha2,
  26                              const char *path1,
  27                              int status,
  28                              int score,
  29                              const char *path2);
  30
  31extern void diff_unmerge(const char *path);
  32
  33extern int diff_scoreopt_parse(const char *opt);
  34
  35#define DIFF_SETUP_REVERSE              1
  36#define DIFF_SETUP_USE_CACHE            2
  37#define DIFF_SETUP_USE_SIZE_CACHE       4
  38
  39extern void diff_setup(int flags);
  40
  41#define DIFF_DETECT_RENAME      1
  42#define DIFF_DETECT_COPY        2
  43
  44#define DIFF_PICKAXE_ALL        1
  45
  46extern void diffcore_std(const char **paths,
  47                         int detect_rename, int rename_score,
  48                         const char *pickaxe, int pickaxe_opts,
  49                         int break_opt,
  50                         const char *orderfile, const char *filter);
  51
  52extern void diffcore_std_no_resolve(const char **paths,
  53                                    const char *pickaxe, int pickaxe_opts,
  54                                    const char *orderfile, const char *filter);
  55
  56#define COMMON_DIFF_OPTIONS_HELP \
  57"\ncommon diff options:\n" \
  58"  -r           diff recursively (only meaningful in diff-tree)\n" \
  59"  -z           output diff-raw with lines terminated with NUL.\n" \
  60"  -p           output patch format.\n" \
  61"  -u           synonym for -p.\n" \
  62"  --name-only  show only names of changed files.\n" \
  63"  --name-only-z\n" \
  64"               same as --name-only but terminate lines with NUL.\n" \
  65"  -R           swap input file pairs.\n" \
  66"  -B           detect complete rewrites.\n" \
  67"  -M           detect renames.\n" \
  68"  -C           detect copies.\n" \
  69"  --find-copies-harder\n" \
  70"               try unchanged files as candidate for copy detection.\n" \
  71"  -O<file>     reorder diffs according to the <file>.\n" \
  72"  -S<string>   find filepair whose only one side contains the string.\n" \
  73"  --pickaxe-all\n" \
  74"               show all files diff when -S is used and hit is found.\n"
  75
  76extern int diff_queue_is_empty(void);
  77
  78#define DIFF_FORMAT_HUMAN       0
  79#define DIFF_FORMAT_MACHINE     1
  80#define DIFF_FORMAT_PATCH       2
  81#define DIFF_FORMAT_NO_OUTPUT   3
  82#define DIFF_FORMAT_NAME        4
  83#define DIFF_FORMAT_NAME_Z      5
  84
  85extern void diff_flush(int output_style);
  86
  87#endif /* DIFF_H */