sapling/eden/fs/inodes/InodeDiffCallback.h
Adam Simpkins d101f404dc add an EdenMount::diff() method
Summary:
This begins adding an EdenMount::diff() method, which walks through the inode
tree and reports differences from the current source control tree state.

My intent is to eventually update the Dirstate code to use this diff()
function, and to remove the existing getModifiedDirectories() logic.  The
getModifiedDirectories() code is currently incorrect, as it reports
materialized directories, which is not the same as directories that are
modified from the current source control state.

The ignore processing logic is not currently implemented in EdenMount::diff(),
but it should be relatively straightforward to add in a subsequent diff.

Reviewed By: bolinfest

Differential Revision: D4726048

fbshipit-source-id: ad0bb3b5d72bb3830f60fc2b2e56a81217c35353
2017-03-21 12:06:44 -07:00

50 lines
1.2 KiB
C++

/*
* Copyright (c) 2004-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#pragma once
#include "eden/utils/PathFuncs.h"
namespace folly {
class exception_wrapper;
}
namespace facebook {
namespace eden {
class TreeEntry;
/**
* A callback that will be invoked with results from a diff operation.
*
* Note that the callback functions may be invoked from multiple threads
* simultaneously, and the callback is responsible for implementing
* synchronization properly.
*/
class InodeDiffCallback {
public:
InodeDiffCallback() {}
virtual ~InodeDiffCallback() {}
virtual void ignoredFile(RelativePathPiece path) = 0;
virtual void untrackedFile(RelativePathPiece path) = 0;
virtual void removedFile(
RelativePathPiece path,
const TreeEntry& sourceControlEntry) = 0;
virtual void modifiedFile(
RelativePathPiece path,
const TreeEntry& sourceControlEntry) = 0;
virtual void diffError(
RelativePathPiece path,
const folly::exception_wrapper& ew) = 0;
};
}
}