Challenge How To

Install GEval (recommended, but not obligatory)

option A — install GEval with Haskell Stack (needs some time and a couple of gigabytes of hard disk space)

In order to evaluate your work locally, you need the GEval tool. First, install Haskell Stack:

  curl -sSL https://get.haskellstack.org/ | sh

and then install GEval itself:

  git clone git://gonito.net/geval
  cd geval
  stack setup
  stack install
  ~/.local/bin/geval --help

option B — just download the GEval binary (simpler if you have a standard 64-bit Linux)
  wget https://gonito.net/get/bin/geval
  chmod u+x geval
  ./geval --help

(GEval will make your life easier, but is not obligatory, so if you have any trouble with installing/running GEval, you can skip this step, for the time being.)

Get your repo $case (appRepoScheme settings) $of SelfHosted $if not isIDSet || not isSSHUploaded

You need to $if not isIDSet \ set up your ID $if not isSSHUploaded \ and $if not isSSHUploaded \ upload your SSH public key \ (see your account) if you want to have a repo hosted on Gonito.net, then:

    git clone #{appRepoHost settings}#{shownId}/#{challengeName challenge}

  

(Warning about empty repository is expected, don't worry about it.)

    cd #{challengeName challenge}
    git pull #{appRepoHost settings}#{challengeName challenge}

  

(Alternatively, you can use any other Git repo, e.g. GitLab, make sure Gonito.net has access to your repo.) $of Branches

Clone the repo:

      git clone #{repoUrl repo}

    $maybe gitAnnexRemote <- (repoGitAnnexRemote repo)
      
        git annex init
        git annex initremote storage #{gitAnnexRemote}
        git annex get --from storage

    

Switch to some branch, let's say my-brilliant-solution:

      git checkout -b my-brilliant-solution

Work on your solution

You need to generate your solution for the test set as test-A/out.tsv. You may also generate the solution for the dev set (dev-0/out.tsv).

You can evaluate results for the dev set locally:

  cd #{challengeName challenge}
  geval --test-name dev-0

Push your solution to the git repo

Commit and push out.tsv files to your repo. It is also recommended to push your source codes along with out.tsv files.

  cd #{challengeName challenge}
  git add foo.py build.sh # add your source codes

$if isJust (repoGitAnnexRemote repo)
  
    # if your output files are large or if they should not pushed to the regular repo (e.g. contain sensitive information):
    git annex add dev-0/out.tsv test-A/out.tsv
    git annex copy --to storage
    # otherwise (e.g. they are just class labels), add the output files in a regular manner:
    git add dev-0/out.tsv test-A/out.tsv
$else
  
    git add dev-0/out.tsv test-A/out.tsv # add your output files

  git commit -m 'my brilliant solution'

$case (appRepoScheme settings)
  $of SelfHosted
    
      git push origin master
    

Repos hosted on Gonito.net

If you use a repo hosted here, a submission and evaluation is triggered automatically. You'll see the evaluation results in your console while pushing. $of Branches

      git push origin my-brilliant-solution:my-brilliant-solution

External repos

If you use an external repo (e.g. at your own of Gitolite or at GitLab/GitHub), you can configure a webhook. $maybe token <- mToken

Your webook is:

     wget --timeout=0 --quiet -O - '#{appRoot settings}/trigger-remotely' --post-data 'token=#{token}&branch=#{myBranch}&challenge=#{challengeName challenge}&url=URL_TO_YOUR_REPO'

Manual submission

In case other methods fail, you can submit your solution manually — go to the submit form.