title: How can I test different versions of the same codebase?
body: <p>This is a design question, quite deep, so I'll try to explain it to my best. It can be valid for any programming language.</p>
  
  <p>We have a codebase in a language. Let's say it's an app that is versioned using <a href="https://semver.org" rel="nofollow noreferrer">server</a> and that it's tracked using <a href="https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols" rel="nofollow noreferrer">git</a> for the sake of the example.</p>
  
  <p><strong>Let's say we find a bug in the version <code>1.5.2</code>, a developer is tasked with fixing it and a version <code>1.5.3</code> is created</strong></p>
  
  <p>Normally in a savvy organization, regression tests are enforced. This means that there is a test that proves that from <code>1.5.3</code> onwards that bug can't occur again, under the same circumstances.</p>
  
  <p>Nowadays I see the code change and I see the fix and a test that goes to the path of the fix. If the buggy code has changed. How can I see that the version <code>1.5.2</code> was failing? As a reviewer, how do I know that the code change did change it without just running the code in my head?</p>
  
  <p>Yeah we could have tests checked out in a different repo / history and run git-bisect. That is useful. But, is there a technique or strategy to test 2 different versions of the repo without involving git, in the same codebase?</p>