/TODO (4699616f54bc9be1acd4b252ddd76b75e9eeb48a) (2216 bytes) (mode 100644) (type blob)
== Critical ==
[ ]
== Non-critical
[ ] optimization: already visited dirs, should not be visited again,
same as with files.
[ ] xmalloc: we abort if we cannot alloc memory, so do not test for null.
[ ] test14: we should not skip hard links. we only need to cache the
data and use it. Take care to not delete it!
[ ] We nay have also hard linked directories. Deal with it!
[ ] Add --exclude para and use the dev+inode to build a list to exclude dirs.
[ ] Auto run cppcheck!
[ ] 'level' should be int till the end.
[ ] Hard links (t_014) may be not correct. I think we ignore links and
for matching dirs this may be a problem. Think about.
[ ] Sort dumping by size saved (option)?
[ ] Dump also how much we can save by deleting. Isn't is already in can_save
and already reported?
[ ] Ignore empty dirs?
[ ] Warn users in man, to never delete some dirs/files that appear on the
left side. Only from the right.
[ ] dev_ino: use blocks of structs.
[ ] Fix man with regarding the example.
[ ] Add -fno-guess-branch-probability when all braches are tagged.
[ ] Add some progress bar?
[ ] Maybe -v should be the default and -q (--quiet) to be added.
[ ] When big files are hashed, print the file name?
[ ] Lazy compute hash on files. Only if we have a match we will incrementally
compute the checksum.
[ ] Adapt man file to recent changes: flags etc.
[ ] Ignore empty files. We have min_size. Should be default to 1?
[ ] 1-bit fields are not printed as %hhu!
[ ] Because we ignore !dir and !files, we may not have really identical
directories. In one of them we may have a socket, for example.
Add a reporting flag for this situation. Or, do not ignore other
type of files.
[ ] I must document a high level view over "algorithm". Even myself
I do not remember what I am doing...
[ ] Use fadvise to not cache data in RAM.
[ ] Set read-ahead when reading full files.
[ ] Use more threads
[ ] Strange case:
dir1
dir2
dir3=dir4
dir4=dir3
[ ] We could throw away unique files.
[ ] Comparing in O(N*N) sucks! Where?
[ ] Dump in stats also the max memory (peak) used.
[ ] Maybe, for flag 'M', list files that were renamed (cmd line flag).
[ ] Use a cache, specified by command line. Use inode and mtime as key?
Mode |
Type |
Size |
Ref |
File |
100644 |
blob |
20 |
85940595c7c3a70ebc0bd5da9b35bc6b6a16a71a |
.exclude |
100644 |
blob |
105 |
9e50f3bfb5cc392fa65019aef80cab5093162bd2 |
.gitignore |
100644 |
blob |
35147 |
94a9ed024d3859793618152ea559a168bbcbb5e2 |
LICENSE |
100644 |
blob |
635 |
5ec5fadb5ab8ec7839ca5f11414aa2a855cffa03 |
Makefile.in |
100644 |
blob |
2627 |
9f4bbb9647e9fea4e861fa9a04bf32a716a2da05 |
README |
100644 |
blob |
2216 |
4699616f54bc9be1acd4b252ddd76b75e9eeb48a |
TODO |
100755 |
blob |
31 |
382d4ea2c0c98b1b25ea01f1e194cfc4990ac527 |
configure |
100755 |
blob |
15674 |
c93b35dad5dedf498b90aafcbf409a4844b1bc8c |
duilder |
100644 |
blob |
807 |
741ea33bf42f98943be21be26fc7e1b6b38d8378 |
duilder.conf |
100644 |
blob |
2040 |
22eee88f6126c7effa781bcb8fde0c58ca487731 |
dupdump.1 |
100644 |
blob |
3981 |
c59d9bbf4076703d2ffc82502f91595393199bce |
dupdump.c |
100644 |
blob |
805 |
a992c9f287eb58cd910aca63c6e009526ec2595f |
dupdump.spec.in |
100755 |
blob |
205 |
677395e91b18c8272dc795ace0d17ec5610e2d70 |
process.sh |
100644 |
blob |
30737 |
8f737a70836f0180a635351bfd342d2d0efbfe89 |
store.c |
100644 |
blob |
1916 |
113ca447b857e1890ad0db35a95a06849330b8db |
store.h |
040000 |
tree |
- |
2f1796ebce0f596969d86738ee6b635521296929 |
tests |
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/catalinux/dupdump
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/catalinux/dupdump
Clone this repository using git:
git clone git://git.rocketgit.com/user/catalinux/dupdump
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main