107 Commits

Author SHA1 Message Date
Allan Odgaard
36f414dbea Add missing include in test file 2019-07-16 19:42:20 +02:00
Allan Odgaard
a7542c7ea1 Retain current thread’s run loop 2019-07-13 11:43:24 +02:00
Allan Odgaard
5aa58e5543 Do not include $APP_NAME in framework’s bundle identifier
Since we have multiple application targets, it doesn’t make sense with a global APP_NAME variable.

Though if building the frameworks as standalone bundles and embedding them in different applications, we may need some sort of unique component in the bundle identifier, but we currently do not do this (they are all statically linked, so the Info.plist is currently unused).
2019-06-26 23:32:54 +02:00
Allan Odgaard
944ad3ea5d Rename API: add_callback → push_callback
This makes it clear what is actually done.
2016-11-11 15:47:19 +07:00
Allan Odgaard
9d980a07df Remove NSPrincipalClass from framework bundles’s Info.plist
This is not something which is used anywhere and a few of the frameworks does not have a principal class.
2016-10-31 17:30:30 +07:00
mathbunnyru
440414f96c Use nullptr in all C++ files instead of NULL
This brings us a bit of extra type safety, for example where an integer is expected, nullptr should be disallowed by the compiler (unlike NULL).
2016-10-22 21:40:14 +07:00
mathbunnyru
284b5a3896 Slight perfomance improvements 2016-10-18 23:06:48 +02:00
Allan Odgaard
5277a5a396 Use std::string’s compare function instead of find 2016-10-18 18:22:15 +02:00
Jacob Bandes-Storch
7ec00a5bea Add “git config commit.gpgsign false” to SCM tests
This allows tests to pass even when a global .gitconfig has gpgsign=true.
2016-09-10 10:18:21 +02:00
Allan Odgaard
46fb745bbe Use perrorf when printing errors with dynamic strings
Also revise error messages to be more consistent.
2016-08-28 17:25:26 +02:00
Allan Odgaard
dbdfa3c6af Add identifying information to perror output 2016-08-21 12:09:30 +02:00
Allan Odgaard
ad34203e89 Ignore /usr/bin/svn if /usr/bin/xcode-select -p fails
On recent OS versions the /usr/bin/svn executable will prompt the user to install svn (if Xcode is not already installed) which can cause some user confusion, so we now avoid using /usr/bin/svn unless Xcode is installed.

This echoes commit 02a5747f89.
2016-08-07 20:46:11 +02:00
Allan Odgaard
61aa554dbd Use current run loop instead of main dispatch queue
This change is for the tests which are not being run in the main queue, so it is wrong to assume that we can use the main queue for callbacks.
2016-07-10 11:29:42 +02:00
Allan Odgaard
469fd74a7b Rely on ARC to manage GCD types (10.8) 2016-06-22 20:43:28 +02:00
Ronald Wampler
2dbde1673b fixup! Ignore /usr/bin/git if /usr/bin/xcode-select -p fails 2016-06-14 10:40:07 -04:00
Allan Odgaard
02a5747f89 Ignore /usr/bin/git if /usr/bin/xcode-select -p fails
On recent OS versions the /usr/bin/git executable will prompt the user to install git (if Xcode is not already installed) which can cause some user confusion, so we now avoid using /usr/bin/git unless Xcode is installed.
2016-06-13 12:59:31 +02:00
Allan Odgaard
40879d5683 Replace sizeofA macro with range-based for loop or std::begin/end 2015-03-05 16:38:09 +07:00
Ronald Wampler
7b92302aaf Make scm_enabled_for_path API public 2014-12-17 15:42:25 -05:00
Allan Odgaard
8976978ef2 Allow more natural sounding values for scmStatus
The values are: enable, enableIfSystemDisk, enableIfLocalDisk, and disable.
2014-10-15 20:43:59 +02:00
Ryan Goulden
f353831e85 Allow scmStatus to be explicitly enabled
Previously, scmStatus would not be enabled on remote volumes even if,
say, a .tm_properties setting explicitly matched a remote volume and
set scmStatus = true. This patch allows setting scmStatus = everyDisk
to skip the local-volume check.

Also defined are scmStatus = localDisk and systemDisk. localDisk is
the same as true (and is the default as before), systemDisk only
enables files on the "/" volume.
2014-10-11 18:55:22 +02:00
Allan Odgaard
1f0e3db472 Remove trailing zeroes from numeric literals
I mainly dislike the trailing zeroes because CGFloat used to be a float but 1.0 is a double (1.0f would be a float). So better to under-specify and let the compiler figure out the proper type.
2014-04-14 14:26:52 +07:00
Allan Odgaard
39b94e6ac3 Harmonize whitespace and add trailing newline 2014-04-14 14:26:52 +07:00
Allan Odgaard
db13d4c1f9 Use std::string::back() instead of operator[] with size()-1 2014-03-31 08:27:18 +07:00
Allan Odgaard
4f4fe38aec Use path::escape instead of local code 2014-03-29 18:58:53 +07:00
Allan Odgaard
a404daecce Use io::exec() instead of system()
The motivation for this change is that we may enable MallocDebug when running tests, which is done via environment variables that we do not want to be passed on to the shell tools we execute.
2014-03-29 18:58:52 +07:00
Allan Odgaard
b4afdd818a Always ignore SCM info from root/home folder
Previously we would only pass the repository’s root to scm::info, and thus the check on the path passed in was enough, but today we are passing in paths for which we do not yet know the repository root, so the check should (also) be done for the path that ends up containing version control meta data.

We still do the initial check since it also rejects non-local paths, thus avoiding stat’ing paths on network file systems.
2014-03-16 18:06:02 +07:00
Allan Odgaard
c2397484b8 Use C++11 for loop
Majority of the edits done using the following ruby script:

    def update_loops(src)
      dst, cnt = '', 0

      block_indent, variable = nil, nil
      src.each_line do |line|
        if block_indent
          if line =~ /^#{block_indent}([{}\t])|^\t*$/
            block_indent = nil if $1 == '}'
            line = line.gsub(%r{ ([^a-z>]) \(\*#{variable}\) | \*#{variable}\b | \b#{variable}(->) }x) do
              $1.to_s + variable + ($2 == "->" ? "." : "")
            end
          else
            block_indent = nil
          end
        elsif line =~ /^(\t*)c?iterate\((\w+), (?!diacritics::make_range)(.*\))$/
          block_indent, variable = $1, $2
          line = "#$1for(auto const& #$2 : #$3\n"
          cnt += 1
        end
        dst << line
      end
      return dst, cnt
    end

    paths.each do |path|
      src = IO.read(path)

      cnt = 1
      while cnt != 0
        src, cnt = update_loops(src)
        STDERR << "#{path}: #{cnt}\n"
      end

      File.open(path, "w") { |io| io << src }
    end
2014-03-03 10:34:13 +07:00
Gerd Knops
78f3584bad Show git conflicts with priority 2014-01-09 14:19:58 +07:00
Allan Odgaard
1c308c810d Use map::emplace instead of inserting std::pair (C++11) 2013-09-05 20:59:11 +02:00
Allan Odgaard
e4e80a946c Use std::make_shared 2013-09-03 12:27:20 +02:00
Allan Odgaard
ed7d457e65 Use text::tokenize instead of text::split
This avoids duplicating the memory used.
2013-08-30 12:30:32 +02:00
Allan Odgaard
e0ad0ba510 Use dispatch_time_t instead of std::chrono::time_point
Building with clang 3.2 (binary distribution) results in “illegal instruction” when adding 3 seconds to the steady clock, so I just replaced the code.

The reason the code was using std::chrono was to be able to provide better debug output, as dispatch_time_t is an abstracted time representation (according to the documentation).
2013-08-16 22:40:08 +02:00
Allan Odgaard
c69112dbe3 fixup! Account for svn returning relative paths
Turns out the paths are relative to the current working directory, not the working copy.
2013-07-29 15:50:31 +02:00
Allan Odgaard
866057f31d Better error reporting when copying git index
Also avoid a (sort of) race condition (related to meaningful error) by using fcopyfile().
2013-07-26 16:21:33 +02:00
Allan Odgaard
d17fb1ad7c Account for svn returning relative paths
Starting with subversion 1.8 we get back relative paths from ‘svn status’ so we need to prepend the working directory path.

I also made a few minor stylistic changes while touching the relevant function.
2013-07-24 15:56:19 +02:00
Allan Odgaard
491fc8a3e3 Add missing semi-colons after assertion 2013-07-21 13:25:28 +02:00
Allan Odgaard
ce4ae62547 Change ‘variables_for_path’ API
We now accept the a directory in addition to the path. If a directory is provided, the path is only used to filter variables rooted at the directory.
2013-05-12 11:09:18 +07:00
Allan Odgaard
5fd188531a Change naming of functions for obtaining variables
These are now all prefixed with what they are obtaining variables for (scope, document, bundle, …) which makes it easier to analyze/refactor the code.

Also change document_t’s settings function to document_settings.
2013-05-09 15:16:32 +07:00
Allan Odgaard
a6fca57d6a Don’t set TM_SCM_BRANCH when there is no branch 2013-03-21 11:45:08 +01:00
Allan Odgaard
00d381ec5f SCM drivers can return arbitrary variables
These variables are mainly for use in the window title. Not all variables make sense across SCM drivers, hence why it is now completely up to the driver, what variables it provides.
2013-03-11 16:14:44 +01:00
Allan Odgaard
ce537a4ef9 Prefix error message with result from getprogname() 2013-03-11 16:11:39 +01:00
Allan Odgaard
94e7624224 Setup git-dir and work-tree for git 2013-03-10 16:07:10 +01:00
Allan Odgaard
742192bf01 Provide svn with path to repository 2013-03-10 16:07:10 +01:00
Allan Odgaard
6b3dcc415f Use --cwd when calling hg
This way we avoid changing the process’ working directory.
2013-03-10 16:07:10 +01:00
Allan Odgaard
ea5d7d3af9 Use weak pointers in most async dispatch blocks
This is mainly to expedite potential destruction of the objects referenced.
2013-02-25 15:27:29 +01:00
Allan Odgaard
3859e25429 Disallow copying scm::info_t
Presently not supported.
2013-02-25 15:27:29 +01:00
Allan Odgaard
e091bdb2f0 Use const for member data initialized by constructor 2013-02-25 15:26:45 +01:00
Allan Odgaard
38be7f56db Add scm::info_t::pop_callback
Ideally we would be able to remove arbitrary callbacks rather than the last one added, but for this we would need to introduce some sort of handle (the callback itself is a block so not suitable as handle). The push/pop API for callbacks is sufficient for our use-case though.
2013-02-25 15:25:17 +01:00
Allan Odgaard
6d6c3e4de6 Use path::is_absolute instead of custom code 2013-02-25 15:25:17 +01:00
Allan Odgaard
10ebd31ad9 Let SCM tests use same executable as driver
The was previously only done for the svn tests and the code had some flaws, like modifying the PATH environment variable.
2013-02-23 11:24:57 +01:00