HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode.com/node_modules/js-git/mixins/path-to-entry.js
var cache = require('./mem-cache').cache;
var modes = require('../lib/modes');

module.exports = function (repo) {
  repo.pathToEntry = pathToEntry;
};

function pathToEntry(rootTree, path, callback) {
  if (!callback) return pathToEntry.bind(this, rootTree, path);
  var repo = this;
  var mode = modes.tree;
  var hash = rootTree;
  var parts = path.split("/").filter(Boolean);
  var index = 0;
  var cached;
  loop();
  function loop() {
    while (index < parts.length) {
      if (mode === modes.tree) {
        cached = cache[hash];
        if (!cached) return repo.loadAs("tree", hash, onLoad);
        var entry = cached[parts[index]];
        if (!entry) return callback();
        mode = entry.mode;
        hash = entry.hash;
        index++;
        continue;
      }
      if (modes.isFile(mode)) return callback();
      return callback(null, {
        last: {
          mode: mode,
          hash: hash,
          path: parts.slice(0, index).join("/"),
          rest: parts.slice(index).join("/"),
        }
      });
    }
    callback(null, {
      mode: mode,
      hash: hash
    });
  }

  function onLoad(err, value) {
    if (!value) return callback(err || new Error("Missing object: " + hash));
    cache[hash] = value;
    loop();
  }

}