![]() Currently, if an AtomicFile is opened on a symlink, the AtomicFile would end up overwriting the link. This change makes AtomicFiles operate on the targets of the links and not the links themselves. ``` $ test/AtomicFileTest 1..22 ok 1 - AtomicFileTest: Shall not exists before finalize ok 2 - AtomicFileTest: Shall exists after finalize ok 3 - AtomicFileTest: Shall have the correct data ok 4 - AtomicFileTest: Neither shall exist before finalize ok 5 - AtomicFileTest: Both shall exists after finalize ok 6 - AtomicFileTest: First file shall contain the correct data ok 7 - AtomicFileTest: Second file shall contain the correct data ok 8 - AtomicFileTest: Appending does not update original before finalize ok 9 - AtomicFileTest: Finalizing updates the appended data ok 10 - AtomicFileTest: Read from Atomicfile ok 11 - AtomicFileTest: Read from Atomicfile should read unfinalized data ok 12 - AtomicFileTest: Two AtomicFiles should access same temp file (part 1) ok 13 - AtomicFileTest: Two AtomicFiles should access same temp file (part 2) ok 14 - AtomicFileTest: Two AtomicFiles should access same temp file (part 3) ok 15 - AtomicFileTest: File not removed before finalize ok 16 - AtomicFileTest: File is removed after finalize ok 17 - AtomicFileTest: writes to symlinks end up in target ok 18 - AtomicFileTest: shall maintain symlink ok 19 - AtomicFileTest: AtomicFile::write_raw throws on error # skip ok 20 - AtomicFileTest: AtomicFile::finalize_all() throws on error # skip ok 21 - AtomicFileTest: AtomicFile::reset clears failure state # skip ok 22 - AtomicFileTest: AtomicFile::append throws on error # skip ok 23 - AtomicFileTest: AtomicFile::append did not partially fill the file. # skip ok 24 - AtomicFileTest: AtomicFile::append failures prevent finalization # skip ``` Fixes #546 Signed-off-by: Shaun Ruffell <sruffell@sruffell.net> |
||
---|---|---|
.github | ||
cmake | ||
completion | ||
doc | ||
docker | ||
ext | ||
src | ||
test | ||
.gitignore | ||
.gitmodules | ||
AUTHORS | ||
ChangeLog | ||
cmake.h.in | ||
CMakeLists.txt | ||
commit.h.in | ||
CONTRIBUTING.md | ||
DCO | ||
docker-compose.yml | ||
INSTALL | ||
LICENSE | ||
README.md |
Timewarrior
Thank you for taking a look at Timewarrior!
Timewarrior is a time tracking utility that offers simple stopwatch features as well as sophisticated calendar-based backfill, along with flexible reporting. It is a portable, well-supported and very active Open Source project.
Please visit timewarrior.net for extensive documentation, downloads, news and more.
Installing
From Package
Thanks to the community, there are binary packages available here.
Building Timewarrior
Building Timewarrior yourself requires
- Git
- CMake (>= 3.8)
- Make
- C++ compiler with full C++17 support, currently GCC 8+ or Clang 5+
- Python 3 (for running the testsuite)
- Asciidoctor (for creating documentation)
There are two ways to retrieve the Timewarrior sources:
-
Clone the repository from GitHub,
git clone --recurse-submodules https://github.com/GothenburgBitFactory/timewarrior cd timewarrior
-
Or download the tarball with curl,
curl -O https://github.com/GothenburgBitFactory/timewarrior/releases/download/v1.5.0/timew-1.5.0.tar.gz
and expand the tarball
tar xzf timew-1.5.0.tar.gz cd timew-1.5.0
Build Timewarrior, optionally run the test suite, and install it.
cmake -DCMAKE_BUILD_TYPE=release
make
[make test]
sudo make install
This copies files into the right place (default under /usr/local
), and installs man pages.
Add the optional parameter -DCMAKE_INSTALL_PREFIX=/path/to/your/install/location
to the cmake
command if you want to install Timewarrior at a location other than /usr/local
.
The make install
command may not require sudo
depending on your choice of install location.
Community
Timewarrior has a lively community on many places on the internet. The project has its own Twitter account, and shares community spaces on IRC and Discord with Taskwarrior.
Best place to ask questions is our discussions forum on GitHub. For other support options, take a look at timewarrior.net/support
Contributing
Contributions are greatly appreciated. Whether in the form of code patches, ideas, discussion, bug reports, encouragement or criticism, we need you!
For support options, take a look at CONTRIBUTING.md or visit timewarior.net.
Visit GitHub and participate in the future of Timewarrior.
License
Timewarrior is released under the MIT license. For details check the LICENSE file.