Git Product home page Git Product logo

sfcc-cartridge-diff's Introduction

Project Support

If you or your company enjoy using this project, please consider supporting my work and joining my discord. 💖

Become a GitHub Sponsor Become a Patreon Sponsor Donate via PayPal Join Discord Community


Logo

SFCC Cartridge Diff Tool

Command Line Tool for Salesforce Commerce Cloud Cartridge Compare. SFCC Cartridge Diff Tool. Working with SFCC Cartridge overrides just got easier: Compare client cartridge against other cartridges, Generate diffs between override files & Filter using local git changes.

Introduction

Working with SFCC Cartridge overrides just got easier:

  • Compare client cartridge against other cartridges
  • Generate diffs between override files
  • Filter using local git changes

Install

Requirements

Install via NPM

npm install -g @sfccdevops/sfcc-cartridge-diff

Install via Clone

git clone https://github.com/sfccdevops/sfcc-cartridge-diff.git
cd sfcc-cartridge-diff
npm install -g

Usage

You can use this tool in any of your SFCC projects. Change to the directory that contains your dw.json file to run the terminal command.

cd /path/to/sfcc/project
sfcc-diff --cartridge app_client_name --options

OPTIONS:

Name Param Alias Definition
Cartridge --cartridge -c Source Cartridge
Diff --diff -d Show Full Diff
Exclude --exclude -e List of Cartridges to Exclude
Filter --filter -f Filter Results for Match
Include --include -i List of Cartridges to Include
Junk Only --junk-only -j Junk Files Only
Modified Only --modified-only -m Modified Files Only

Examples

Comparing Client Cartridge to All Cartridges:

This is the Default Behavior and will compare the provided cartridge to ALL cartridges in the current directory ( event nested ones ).

sfcc-diff --cartridge app_client_name
sfcc-diff -c app_client_name

Comparing Client Cartridge to Specific Cartridges:

If you only care about a couple of cartridges, you can speed things up by specifying which ones to compare against.

sfcc-diff --cartridge app_client_name --include storefront-reference-architecture,third_party_core
sfcc-diff -c app_client_name -i storefront-reference-architecture,third_party_core

Comparing Client Cartridge to All Cartridges Except Specific Ones:

For when you want to compare your client cartridge to ALL cartridges, but want to leave a couple out.

sfcc-diff --cartridge app_client_name --exclude link_paypal,int_payeezy
sfcc-diff -c app_client_name -e link_paypal,int_payeezy

Comparing Client Cartridge to All Cartridges using Only Modified Files:

Limit compare to just the modified files from your client --cartridge in your current git commit.

sfcc-diff --cartridge app_client_name --modified-only
sfcc-diff -c app_client_name -m

Comparing Client Cartridge to All Cartridges and just show Junk Files:

Sometimes a file gets copied over to override another cartridge, but ends up not being modified. These junk files are normally hard to catch via git since the file is technically new.

sfcc-diff --cartridge app_client_name --junk-only
sfcc-diff -c app_client_name -j

Comparing Client Cartridge to All Cartridges and Filtering for ISML Files:

If you want to limit the results to just what matches a filter, you can use the --filter flag. This will match on the entire relative URL, not just the file name.

sfcc-diff --cartridge app_client_name --filter .isml
sfcc-diff -c app_client_name -f .isml

Comparing Client Cartridge to Specific Cartridge and Generate Diff:

Want to actually see the changes between cartridge files? Just pass in a the Diff option and it will render it in your terminal window.

sfcc-diff --cartridge app_client_name --include storefront-reference-architecture --diff
sfcc-diff -c app_client_name -i storefront-reference-architecture -d

Comparing Client Cartridge to Specific Cartridge and Generate Diff in External App:

Want to use an existing Diff Tool to generate the diff instead of displaying it in your terminal window? Just pass in the name of a tool you already have configured with git.

sfcc-diff --cartridge app_client_name --include storefront-reference-architecture --diff=ksdiff
sfcc-diff -c app_client_name -i storefront-reference-architecture -d ksdiff

NOTE: In order to use an external app, you will need to have one configured in your ~/.gitconfig file.

Here are a couple of apps you can use for external diffs, and how to configure them.

ksdiff - Kaleidoscope

[difftool "ksdiff"]
  prompt = false
  trustExitCode = true
  cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"

bcomp - Beyond Compare

[difftool "bcomp"]
  prompt = false
  trustExitCode = true
  cmd = bcompare -solo \"$LOCAL\" \"$REMOTE\"

meld - Meld

[difftool "meld"]
  prompt = false
  trustExitCode = true
  cmd = meld --newtab --label=\"$MERGED\" \"$LOCAL\" \"$REMOTE\" &> /dev/null &

kdiff3 - KDiff3

[difftool "kdiff3"]
  prompt = false
  trustExitCode = true
  cmd = open -W -a kdiff3 -n --args \"$LOCAL\" \"$REMOTE\" &> /dev/null &

About the Author

Peter Schmalfeldt is a Certified Senior Salesforce Commerce Cloud Developer with over 20 years of experience building eCommerce websites, providing everything you need to design, develop & deploy eCommerce applications for Web, Mobile & Desktop platforms.

Disclaimer

The trademarks and product names of Salesforce®, including the mark Salesforce®, are the property of Salesforce.com. SFCC DevOps is not affiliated with Salesforce.com, nor does Salesforce.com sponsor or endorse the SFCC DevOps products or website. The use of the Salesforce® trademark on this project does not indicate an endorsement, recommendation, or business relationship between Salesforce.com and SFCC DevOps.

sfcc-cartridge-diff's People

Contributors

manifestinteractive avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

ismailnguyen

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.