mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
d101f404dc
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
50 lines
1.2 KiB
C++
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;
|
|
};
|
|
}
|
|
}
|